当我用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

08-16 03:20