int main() против void main() в C

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

3 ответа

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам