_ (sottolineatura singola) è un nome di variabile C++ valido?

_ (sottolineatura singola) è un nome di variabile C++ valido?

Sì, dal linguaggio di programmazione C++, 4a edizione:


Secondo Stroustrup (3a edizione, sezione 4.9.3), un identificatore è costituito da una sequenza di lettere e cifre. Il primo carattere deve essere una lettera. Il carattere di sottolineatura è considerato una lettera.

Quindi sì, dovrebbe essere portatile.


Sì, _ è un identificatore valido, poiché soddisfa i requisiti di sintassi. Fondamentalmente, un identificatore consiste in un trattino basso o lettera, seguito da zero o più altri caratteri che possono essere trattini bassi, lettere o cifre. (A partire da C++ 2011, gli identificatori possono anche contenere nomi di caratteri universali e altri caratteri definiti dall'implementazione, ma questo non è rilevante per la tua domanda.)

Ma probabilmente non è uno che dovresti usare nel tuo codice, a meno che tu non stia molto attento.

Come dice questa risposta, citando lo standard C++ del 2003:

Il tuo _ la variabile non è nello spazio dei nomi globale, quindi in questo caso sei al sicuro, ma è una buona idea evitare di definire qualsiasi identificatori che iniziano con un trattino basso.

Inoltre, credo che GNU gettext (che fornisce supporto per i messaggi localizzati) usi il nome _ per i propri scopi. (Probabilmente è stata una cattiva idea per GNU gettext fare questo, ma è stata una scelta conveniente.)