Во многих примерах кода на сайте встречаются как записи вида void main(), так и int main() для главной функции программы.
Какой из них правильный и в чём вообще разница?
Стандарт языка требует обязательного наличия двух возможных реализаций:
int main()
int main(int, char**)
То есть в обоих случаях возвращаемым типом является int. Однако, разрешается существование и дополнительных вариантов в том или ином компиляторе:
Its type shall have C++ language linkage and it shall have a declared return type of type int, but otherwise its type is implementation-defined.
Таким образом, вариант, возвращающий int является переносимым между разными реализациями компиляторов, а void к таковым не относится. Но в частности void main() поддерживается компилятором Microsoft Visual C++.
Возвращаемое значение main в общем случае говорит об успешности работы программы. Если всё прошло хорошо, то возвращается ноль - return 0;; иначе следует вернуть какое-то другое целочисленное значение, которое можно обработать на стороне, вызвавшей программу. Разрешается явно не писать return 0; в main. В таком случае, при выходе из функции 0 будет подразумеваться. Аналогичное поведение распространяется и на void вариант от MS. Но если в случае с int код возврата можно вернуть явно через return, то с void main() такой вариант уже не пройдет:
error C2562: 'main': 'void' function returning a value
Правда, вместо этого можно использовать функцию exit(0), которая прерывает выполнение программы и возвращает переданный код вызывающей стороне.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости