为什么gcc会忽略__attribute __((stdcall))?

时间:2018-10-09 05:23:24

标签: c gcc calling-convention

当我使用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);
}

1 个答案:

答案 0 :(得分:1)

gcc documentation说:

  

stdcall

     

在x86-32目标上stdcall属性使编译器假定被调用函数弹出用于传递参数的堆栈空间,除非它采用可变数量的参数

(强调我的。)

因此,如果您不针对32位计算机进行编译,则无法使用stdcall