You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -14,10 +13,12 @@ The **`__fastcall`** calling convention specifies that arguments to functions ar
14
13
15
14
|Element|Implementation|
16
15
|-------------|--------------------|
17
-
|Argument-passing order|The first two DWORD or smaller arguments that are found in the argument list from left to right are passed in ECX and EDX registers; all other arguments are passed on the stack from right to left.|
16
+
|Argument-passing order|The first two `DWORD` or smaller arguments that are found in the argument list from left to right are passed in ECX and EDX registers; all other arguments are passed on the stack from right to left.|
18
17
|Stack-maintenance responsibility|Called function pops the arguments from the stack.|
19
18
|Name-decoration convention|At sign (\@) is prefixed to names; an at sign followed by the number of bytes (in decimal) in the parameter list is suffixed to names.|
20
19
|Case-translation convention|No case translation performed.|
20
+
|Classes, structs, and unions|Treated as "multibyte" types (regardless of size) and passed on the stack. |
21
+
|Enums and enum classes | Passed by register if their underlying type would be passed by register. For example, if the underlying type is `int` or `unsigned int` of size 8, 16, or 32 bits. |
21
22
22
23
> [!NOTE]
23
24
> Future compiler versions may use different registers to store parameters.
@@ -46,7 +47,7 @@ is equivalent to this:
46
47
void __fastcall CMyClass::mymethod() { return; }
47
48
```
48
49
49
-
For compatibility with previous versions, **_fastcall** is a synonym for **`__fastcall`** unless compiler option [/Za \(Disable language extensions)](../build/reference/za-ze-disable-language-extensions.md) is specified.
50
+
For compatibility with previous versions, **`_fastcall`** is a synonym for **`__fastcall`** unless compiler option [/Za \(Disable language extensions)](../build/reference/za-ze-disable-language-extensions.md) is specified.
0 commit comments