«int main (vooid)»? Как это работает?

Недавно мне пришлось ввести небольшую тестовую программу на C, и в процессе я допустил орфографическую ошибку в главной функции, случайно используя vooid вместо void . 1221] И все же он все еще работал.

Сокращая его до самой маленькой полной версии, я получил:

int main (vooid) {
    return 42;
}

Это действительно компилирует ( gcc -Wall -o myprog myprog. c ), а при запуске возвращает 42.

Как именно этот действительный код?


Вот стенограмма, вырезанная и вставленная из моей оболочки bash , чтобы показать, что я делаю :

pax$ cat qq.c
int main (vooid) {
    return 42;
}

pax$ rm qq ; gcc -Wall -o qq qq.c ; ./qq

pax$ echo $?
42
132
задан paxdiablo 27 August 2011 в 22:40
поделиться