Słyszałem, że w C, main() jest reentrant, podczas gdy w C++ nie jest.Czy funkcja main() została ponownie zgłoszona?
Czy to prawda? Jaki jest scenariusz ponownego wejścia w funkcję main()?
Słyszałem, że w C, main() jest reentrant, podczas gdy w C++ nie jest.Czy funkcja main() została ponownie zgłoszona?
Czy to prawda? Jaki jest scenariusz ponownego wejścia w funkcję main()?
Wczesne implementacje C++, które były oparte na tłumaczeniu na język C, zaimplementowano globalnych konstruktorów poprzez dodanie wywołania funkcji na początku main
. W ramach takiej implementacji ponownie wywołałby globalny cors, wywołując spustoszenie, więc było to po prostu zabronione.
C z drugiej strony nie miał powodu, aby zabronić dzwonienia pod numer main
i zawsze było to tradycyjnie możliwe.
chodzi gdy jest to przydatne, powiedziałbym, „rzadko”. Większość programów, które widziałem, które nazywały się main
, to wpisy IOCCC.
Nie sądzę, to znaczy [reentrant] (http://en.wikipedia.org/wiki/Reentrancy_ (computing)). Prawdą jest jednak, że możesz wywoływać 'main' w C i nie możesz wywoływać go w C++. –