当我用gcc
版本8.1.1编译下面的C源代码时,我得到一个warning: ‘stdcall’ attribute ignored [-Wattributes]
。
为什么gcc选择忽略这个属性,我可以做什么让它接受它?
__attribute__((stdcall)) int S(int a) {
return a * (a+1);
}
int main() {
return S(6);
}
最佳答案
gcc documentation表示:stdcall
在x86-32目标上,stdcall
属性使编译器假设调用的函数弹出用于传递参数的堆栈空间,除非它接受可变数量的参数。
(强调我的。)
因此,如果不是为32位计算机编译,则不能使用stdcall
。