Почему gcc игнорирует __attribute __ ((stdcall))? - PullRequest
0 голосов
/ 09 октября 2018

Когда я компилирую следующий источник C с gcc версией 8.1.1, я получаю warning: ‘stdcall’ attribute ignored [-Wattributes].

Почему gcc выбирает игнорировать этот атрибут и что я могу сделать, чтобы он принял его?

__attribute__((stdcall)) int S(int a) {
    return a * (a+1);
}

int main() {
    return S(6);
}

1 Ответ

0 голосов
/ 09 октября 2018

Документация gcc гласит:

stdcall

Для целей x86-32 , атрибут stdcall вызываеткомпилятор, чтобы предположить, что вызываемая функция выскакивает из стекового пространства, используемого для передачи аргументов, если только она не принимает переменное число аргументов.

(выделение мое.)

Так что если вы* не компилируется для 32-битной машины, stdcall не может быть использован.

...