What does "C" calling convention actually mean?

I'm new to system programming.
I got a little confused by what "C" calling convention mean in Rust FFI.
According to the docs, these:
stdcall, aapcs, cdecl, fastcall, vectorcall , Rust, rust-intrinsic, system, C, win64, sysv64 are the available ABI constrains.
As I've been learning about calling conventions, I found there is no calling convention named "C" calling convention listed here in Wikipedia.
So I'm guessing maybe the "C" ABI isn't referring to a specific calling convention. Like it says in the Rust FFI page, "the platform's C ABI" doesn't sound very specific. Maybe sysv64 is a C ABI on Unix/Unix-like system and cdecl is a C ABI on win32 system.
Another thought is that "C" ABI here merely means RTL(Right to left) parameter order on stack. As oppose to Pascal(LTR)?
Can someone confirm my theory or point out where I can find the answer?

1 Like

It means whatever the platform uses in C by default.

1 Like

The C calling convention means that it is compatible with C code compiled using LLVM for the same target.


This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.