Diciamo che ho un po 'di codice C++:Perché C++ applica questo comportamento durante l'inizializzazione incrociata?
if (error)
goto exit;
...
// size_t i = 0; //error
size_t i;
i = 0;
...
exit:
...
ho capito che non dovremmo usare goto
, ma ancora Perché
size_t i;
i = 0;
compilare mentre size_t i = 0;
non lo fa?
Perché un tale comportamento è applicato dallo standard (citato da @SingerOfTheFall)?
È possibile trasferire in un blocco, ma non in modo che ignori le dichiarazioni con l'inizializzazione. Un programma che salta da un punto in cui una variabile locale con durata di archiviazione automatica non è nello scope in un punto in cui è in ambito non formattato a meno che la variabile non abbia il tipo POD (3.9) e sia dichiarata senza inizializzatore.
Quale compilatore? –
@Adriano: g ++ 4.1.1 –
Aggiunto 'language-design' perché stai chiedendo informazioni sulle decisioni di progettazione per una lingua. – Kos