2013-06-27 15 views
10

Ho sentito che in C, main() è rientrante, mentre in C++ no.La funzione principale() rientranti?

È vero? Qual è lo scenario del reinserimento nella funzione main()?

+7

Non penso che tu intenda [rientrante] (http://en.wikipedia.org/wiki/Reentrancy_ (informatica)). È vero, tuttavia, che è possibile chiamare 'main' in C e non è possibile chiamarlo in C++. –

risposta

16

Le prime implementazioni di C++, basate sulla traduzione in C, hanno implementato i costruttori globali aggiungendo una chiamata di funzione all'inizio di main. In base a tale implementazione, chiamando di nuovo main si riavviavano i ctors globali, causando il caos, quindi era semplicemente proibito farlo.

C d'altra parte non aveva motivo di vietare di chiamare main, ed era sempre tradizionalmente possibile.

Per quanto riguarda quando è utile, direi "raramente". La maggior parte dei programmi che ho visto che hanno chiamato main erano voci IOCCC.

Problemi correlati