Возвращает ли функция main()?

Я слышал, что в C main() является реентерабельным, а в С++ - нет.

Это правда? Каков сценарий повторного входа в функцию main()?

Ответ 1

Ранние реализации С++, основанные на переводе на C, реализовали глобальные конструкторы путем добавления вызова функции в начало main. В такой реализации вызов main снова заново запустит глобальные ctors, что приведет к хаосу, поэтому было просто запрещено это делать.

С, с другой стороны, не было причин запрещать звонить main, и это всегда было традиционно возможным.

Что касается того, когда это полезно, я бы сказал "редко". Большинство программ, которые я видел, называемые main, были записями IOCCC.