Я думаю, что ваша реализация использует возвращаемое значение последней функции, вызванной из main () - конечно, это не поведение, от которого вы можете зависеть. (И может меняться в зависимости от параметров компиляции, т. Е. Вставки)
(Это, вероятно, связано со значением, оставленным в регистре EAX, как уже упоминалось в комментариях.)
Лучшее, что я могу придумать:
static int program_exit_value;
void setExitValue(int value)
{
program_exit_value = value;
}
int main(void)
{
...
return program_exit_value;
}
Который использует оператор return
, но имеет то преимущество, что он совместим с ANSI.