永发信息网

加上__cdecl 在C语言中和普通的函数有什么区别呢

答案:2  悬赏:80  手机版
解决时间 2021-12-28 17:04
加上__cdecl 在C语言中和普通的函数有什么区别呢
最佳答案
__cdecl最前面有两条下划线,这说明了这是一个编译器扩展,也就是说这只在特定的编译器上有效,在其他编译器上可能是错误的格式。
cdecl是调用约定的一种(其他还有stdcall,fastcall等),表示一种调用函数时参数传递的顺序,只有确定参数传递顺序,才能正确调用函数。cdecl支持变长参数,因此C语言较常用的就是就是cdecl,但有时也必须使用别的调用约定(如WindowsAPI要求调用约定为stdcall)
大多数编译器应该都有类似的扩展(但名称和格式可能不同),有的编译器默认为所有的函数未经特殊说明都用cdecl调用约定调用,但有的编译器可以改变默认调用约定,因此带有__cdecl的函数和不带有__cdecl的函数实际编译产生的代码可能相同,也可能不同……
全部回答
这些函数是有函数体的,不过函数体的位置在对应的库文件中,头文件中只有函数原型声明…… cdecl是一种调用约定,表示一种特定的参数和返回值传递方式,在跨文件(甚至跨语言)调用函数的时候才需要指定。这个关键词在不同的编译器上写法不完全一样,例如gcc就只接受__attribute__((cdecl)),而不是使用 _cdecl 这样的写法,如果使用_cdecl这个保留字,你的代码就只能在一种编译器上编译……
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
可以根据滴滴注册的手机号码查询车主车牌号码
不幸的一天阅读答案
唯品会的whoo后化妆品是正品吗
3dsmax中 proboolean和procutter有什么作用
下面是某同学作文的一个片断,按要求加以修改
手机看店监控器能看到没监控到的位置么?
为什么大唐好徒弟签到时总是说没有网洛
开封大学医学部分数线多少啊?我文科的》
我下载了iFile 怎么打开//var/root/Library
被莎士比亚赞美为“天堂的苹果”的水果是哪一
如果一个医学院校的临床招的学生全部是本硕连
x2-5x+2=0解方程 拜托了
米字部首的字有哪些
高分、高考过的人进。
姓名测试打分胡少屏
推荐资讯
钢管属于钢材吗
开书店用英语怎么说
怎样在冰箱里冻冰块
婷字连笔怎么写
衣服搭配技巧羊绒大衣配什么裤子
今天用ghost恢复系统,然后就无法启动系统了
苍南县财政局办公位置在哪啊?好找么?
什么是步长
一个数除以6,商80余5,这个数是________.
单选题下列句子没有错别字的一项是A.决不致于
下列公式中,既适用于点电荷产生的静电场,也
梦到月全食
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?