2013-04-06 18 views
7

Ho un codice legacy per un sistema di messaggistica implementato con un enorme blocco if/else if/else if .... Quando volevo aggiungere un nuovo blocco else, Visual Studio 2010 ha "errore del compilatore interno".Numero massimo di istruzioni in C++

Sapete se è definito dallo standard C++ o dal numero massimo definito di implementazione delle istruzioni else? Se è stata definita l'implementazione, dove posso trovare il numero massimo per Visual Studio 2010?

Per motivi storici non riesco a modificare il codice, anche se l'implementazione è ... non molto saggia.

+4

Sembra che l'abbiate trovato. Dubito fortemente che sia specificato, presumono che nessuno colpirà quel limite (ammesso che esista un tale limite) in un programma reale. –

+0

Puoi provare a compilarlo in un compilatore diverso? –

+0

Solo Visual Studio 2010 per PC e Xbox – Felics

risposta

12

Lo standard C++ non richiede un minimo. Ha un minimo raccomandato, ma non obbligatorio.

Livelli di annidamento di istruzioni composte, strutture di controllo di iterazione e strutture di controllo di selezione [256].

volta che il limite di un'implementazione viene superato, il comportamento è indefinito.

+1

Non intendi "massimo"? :) –

+3

@MihaiTodor No, vuole dire minimo. È la * vera * domanda che viene posta qui se l'OP lo sa o no. Esiste un numero minimo di profondità standard definito che deve essere soddisfatto dalle implementazioni affinché siano conformi allo standard? Johannes ha letto a destra la domanda un po 'arretrata e ha affrontato il problema * reale *. (e +1 per la risposta). – WhozCraig

+2

È un limite superiore minimo (minimax?). Il compilatore dovrebbe consentire almeno 256 livelli (quindi il valore minimo accettabile per il numero massimo di livelli è 256). –

1

Ecco i limiti del compilatore Visual Studio C++ (per gentile concessione di Google).

MSVC compiler limits