名字修饰与调用约定

下面是整理的关于c/c++名字修饰和调用约定的规则:

 

 

名字修饰

调用约定

C

C++

__stdcall

约定在输出函数名前加上一个下划线前缀,后面加上一个"@"符号和其参数的字节数目,格式为_functionname@number

1. 以“?”标示函数名的开始,后跟函数名;

2. 函数名后面以“@@YG”标识参数表的开始,后跟参数表。

3. 参数表以代号标示:X--void D--char E--unsigned charF--short H--intI--unsigned char J--long K--unsigned int M--float N--double _N--boolPA--标示指针,后面的代号表明指针的类型,如果相同类型的指针连续出现,以“0”代替,一个“0”代表依次重复。

4. 参数表的第一项为该函数的返回值类型,其后依次为参数的数据类型,指针标识在其所指类型前面。

5. 参数表以“@Z”标示整个名字的结束,如果该函数无参数,则以“Z”标示结束。例:int Test1(char *var1, unsigned long)----?Test1@@YGHPADK@Z    void Test2(void)----?Test2@@YGXXZ    "

__cdecl

约定仅在输出函数名前加上一个下划线前缀,格式为_functionname

规则同上面的__stdcall调用约定,只是参数表的开始标识由上面的"@@YG"变为"@@YA"

你可能感兴趣的:(名字修饰与调用约定)