Come mai il comitato per gli standard C ++ introduce una parola chiave come nullptr e se la cava? [chiuso]

-2

Questo deve aver infranto molte basi di codice dei popoli, giusto? Chiunque avesse una variabile chiamata "nullptr" (che penso sarebbe stata abbastanza comune) deve trovare "nullptr" e sostituirla con "something_else" prima di essere in grado di compilare con c ++ 11.

Il comitato degli standard presume che la gente farà tanto "aggiustamenti"?

    
posta Chani 22.07.2014 - 12:47
fonte

2 risposte

14

Il comitato per gli standard C ++ è pieno di persone intelligenti che sono pienamente consapevoli della quantità di codice esistente e delle conseguenze dell'introduzione di nuove parole chiave.

Uno degli obiettivi del comitato è quello di mantenere il codice esistente il più possibile funzionante invariato e che sicuramente svolge un ruolo importante quando si decide di aggiungere nuove parole chiave e come denominare tali parole chiave.

Per quanto ne so, quando viene proposta una nuova parola chiave, eseguono un'indagine su un numero di codebase di grandi dimensioni per vedere quanti conflitti creerebbe una nuova parola chiave e se uno qualsiasi di questi conflitti creerebbe una modifica silenziosa del comportamento del programmi.

In base alla proposta per l'aggiunta di nullptr , l'ortografia della parola chiave ha causato il minor numero di conflitti con il codice esistente:

  • Programmers have often requested that the null pointer constant have a name, and nullptr appears to be the least likely of the alternative text spellings to conflict with identifiers in existing user programs. For example, a Google search for nullptr cpp returns a total of merely 150 hits, only one of which appears to use nullptr in a C++ program.

    • The alternative name NULL is not available. NULL is already the name of an implementation-defined macro in the C and C++ standards. If we defined NULL to be a keyword, it would still be replaced by macros lurking in older code. Also, there might be code “out there” that (unwisely) depended on NULL being 0. Finally, identifiers in all caps are conventionally assumed to be macros, testable by #ifdef, etc.
    • The alternative name null is impractical. It is nearly as bad as NULL in that null is also a commonly used in existing programs as an identifier name and (worse) as a macro name. For example, a Google search for null cpp returns about 180,000 hits, of which an estimated 3% or over 5,000 use null in C++ code as an identifier or as a macro. Another favorite, nil, is worse still.
    • Any other name we have thought of is longer or clashes more often.

Data questa analisi, non mi aspetto che sia necessario effettuare molti aggiustamenti.
In caso contrario, si è previsto l'aggiornamento della base di codice per le modifiche incompatibili all'indietro quando si passa a un nuovo standard.

    
risposta data 22.07.2014 - 13:35
fonte
5

La presentazione di nuove funzionalità e estensioni della lingua, la maggior parte delle volte, richiede nuove parole chiave per la lingua o modifiche alla sintassi. Inoltre, è essenziale denominare queste parole chiave per gli scopi previsti in modo da aiutare i programmatori a memorizzare le nuove funzionalità. Fortunatamente, a tale scopo, le nuove versioni / standard della lingua contengono un elenco di modifiche al codice che è necessario consultare prima di creare il codice con il nuovo set di strumenti.

    
risposta data 22.07.2014 - 13:52
fonte

Leggi altre domande sui tag