На какое-то мгновение я очень гордился тем, что написал свою, вероятно, первую программу C без ошибок. Вот весь исходный код:Самая короткая программа на C, все еще вызывает segfault
int main;
Он компилирует прекрасно даже без int
, но выдается предупреждение (даже без -Wall
) и, как программист, который метит в программе свободное от ошибок, я лечу их как ошибки.
С радостью скомпилировав это приложение, я сразу же бросился его запускать. К моему удивлению, возникла ошибка сбоя сегментации ...
Теперь серьезно. Что именно происходит?
Моя догадка заключается в следующем: это отсутствие определения main
. Это так очевидно, но компилятор разрешает это. OK, main
могут быть определены в другом блоке. Но даже компоновщик ничего не делает по этому поводу. Любая конкретная причина?
Я думаю, что проблема в том, что вы просто определить прототип, но не саму функцию, но ждать: Вы просто определить переменную и никакие функции. Пока точка входа не определена. – rekire
Это [пояснение по Reddit] (http://www.reddit.com/r/programming/comments/19xyw1/some_dark_corners_of_c_presentation/c8swcpi?context=2) может помочь. – DCoder
Это зависит от того, как и где вы компилируете свою программу. Для программ с размещенной средой требуется «основная», но автономные программы для среды нет. –