За 5.1.2.2.1 Запуск программы , параграф 1 стандарта C (шахтное производство):
Функция, вызываемая при запуске программы, называется основной.
реализация не объявляет прототип для этой функции. Это должно быть
определяется с типом возврата int и без параметров:
int main(void) { /* ... */ }
или с двумя параметрами (именуемыми здесь как argc и argv, хотя любой
имена могут использоваться, так как они являются локальными для функции, в которой они находятся
объявившего):
int main(int argc, char *argv[]) { /* ... */ }
или эквивалентный; или другим способом, определяемым реализацией.
Хотя void main()
подходит "или каким-либо другим образом, определяемым реализацией", на мой взгляд, конкретное расширение, специфичное для реализации, такое как, не относится к тексту новичка без хотя бы некоторого объяснения, поскольку оно будет только привести к путанице позже.
По крайней мере, найдите книгу, в которой глаза не болят так сильно.