Int main() vs void main() в C

В C я знаю, что int main() возвращает int, где void main() не работает. Кроме этого, есть ли разница между ними? сначала лучше второго?

Ответ 1

В подавляющем большинстве случаев один из int main(void) или int main(int argc, char* argv[]) - это то, что вам нужно использовать. В частности, если вы пишете программу, которая будет скомпилирована любым основным компилятором для работы на персональном компьютере, с полным набором стандартных библиотек C, вам почти наверняка потребуется вернуть int из main.

(Я бы также избежал использования пустого списка аргументов, см. "Почему мы не используем (void) в основном?" )

В стандарте C99 есть предусмотрены другие подписи, определенные в реализации, и вы можете использовать их, если вы прочитали руководство для своего компилятора, и оно говорит, что вы можете.

(5.1.2.2.1) Он должен быть определен с типом возврата int и без параметров... или с двумя параметрами... или каким-либо другим способом реализации

Лично я бы избегал их, даже если они разрешены (если это возможно), потому что это еще одна вещь, о которой нужно беспокоиться, если вам когда-нибудь понадобится порт в другую систему.

Смотрите комментарии ниже Почему мы не используем (void) в основном?" для некоторого интересного обсуждения этого вопроса.

Ответ 2

Если ваша книга говорит void main(), она либо очень устарела, и написана идиотом (или обоими)

edit: ОК, если вы не находитесь в очень маловероятной системе, где у вас есть автономная главная - см. Почему тип основной функции на C и С++ остается для пользователя, чтобы определить?

Ответ 3

void main() недействителен C. int main() is. Это главное отличие.