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