Я слышал, что в C main() является реентерабельным, а в С++ - нет.
Это правда? Каков сценарий повторного входа в функцию main()?
Ответ 1
Ранние реализации С++, основанные на переводе на C, реализовали глобальные конструкторы путем добавления вызова функции в начало main. В такой реализации вызов main снова заново запустит глобальные ctors, что приведет к хаосу, поэтому было просто запрещено это делать.
С, с другой стороны, не было причин запрещать звонить main, и это всегда было традиционно возможным.
Что касается того, когда это полезно, я бы сказал "редко". Большинство программ, которые я видел, называемые main, были записями IOCCC.