int(int a, int b);4.
调用方法是唯一不能显式指定的修饰符。 它是C++类成员函数的默认调用方法。 由于成员函数调用也有一个this指针,所以必须使用这种特殊的调用方法。
打电话的意思是:
参数从右到左压入堆栈。
如果参数个数确定,则通过ecx将this指针传递给被调用者; 如果参数个数不确定,则在所有参数入栈后,再将this指针入栈。
如果参数的数量是可变的,调用者将清除堆栈,否则函数将自行清除堆栈。
可以看出,当参数个数固定时,与cdecl类似,当参数个数不规则时,与cdecl类似。
5.裸电话
这是一种比较少见的调用方式,在高级编程语言中并不常见。
函数声明的调用方式必须与实际的调用方式一致,否则编译器难免会造成混乱。
函数名称修改规则:
1、C编译时函数名修改的常规规则:
调用约定在输出函数名称前添加下划线,后跟“@”符号及其参数的字节数,格式为@8。
调用约定只是在格式中在输出函数名称前添加下划线前缀。
调用约定在输出函数名前添加“@”符号,后跟“@”符号及其参数的字节数,格式为@@8。
它们都没有改变输出函数名称中字符的大小写,这与调用约定不同,调用约定同意输出函数名称不被修改并且全部大写。
2、C++编译时函数名修改约定规则:
调用约定:
(1) 使用“?” 识别函数名的开头,后面是函数名;
(2)函数名后跟“@@YG”标识参数列表的开始,后面跟参数列表;
(3)参数表用代码表示:
X--无效,
D--字符,
E--字符,
F——短,
暗示,
我--int,
J--长,
K--长,
M——浮动,
N--,
_N--布尔,
....
PA——表示指针,下面的代码表示指针类型。 如果同一类型的指针连续出现,则用“0”代替,一个“0”代表重复;
(4)参数表中第一项是函数的返回值类型,后面是参数的数据类型,指针所指的数据类型之前标注;
(5) 参数列表后,“@Z”标志着整个名称的结束。 如果函数没有参数,则以“Z”结尾。
其格式为“?@@YG*****@Z”或“?@@YG*XZ”,例如:
int Test1 (char *var1, long)-----"?Test1@@@Z"
void Test2() -----"?Test2@@YGXXZ"
调用约定:
规则与上面的调用约定相同,只是参数表的起始标识由上面的“@@YG”改为“@@YA”。
调用约定:
规则与上面的调用约定相同,只是参数表的起始标识由上面的“@@YG”改为“@@YI”。
VC++默认的函数声明是“”,只能由C/C++调用。
今天的分享就到此为止。 如果您有任何疑问,请指出。
最后,如果你也想成为一名程序员,想要快速掌握编程,就加入学习企鹅圈吧!
有资深专业软件开发工程师在线解答您的所有疑问~
编程学习书籍:
编程学习视频: