Quando si usa in C++ l'underscore prima del nome di una variabile?
Ad esempio:
_x=3;
Quando si usa in C++ l'underscore prima del nome di una variabile?
Ad esempio:
_x=3;
Quando ti pare e piace?![]()
![]()
![]()
Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
Occhio per occhio uguale... occhio al quadrato
Teoricamente quando ti pare, in pratica ci sono delle limitazioni.
Lo standard C++ infatti dice (§17.4.3.1.2):
Ossia, non puoi mai usare nomi che iniziano con due underscore e nomi che iniziano con un underscore seguito da una lettera maiuscola, e non puoi usare alcun nome che inizia con un underscore nel namespace globale. In tali contesti, infatti, i nomi fatti a quella maniera sono riservati per uso da parte della libreria C++; l'uso che questa ne può fare può essere interno (se guardi negli header standard vedrai che tutti i nomi "privati" iniziano con un doppio underscore) sia esterno (se una libreria standard fornisce negli header standard delle funzioni aggiuntive oltre a quelle previste dallo standard, lo fa con nomi che iniziano per doppio underscore).Certain sets of names and function signatures are always reserved to the implementation:
— Each name that contains a double underscore (__) or begins with an underscore followed by an uppercase letter (2.11) is reserved to the implementation for any use.
— Each name that begins with an underscore is reserved to the implementation for use as a name in the global namespace. (Such names are also reserved in namespace ::std (17.4.3.1).)
In sostanza, quindi, puoi usare solo nomi che iniziano per underscore seguito da lettera minuscola, e comunque non nel namespace globale (puoi usarli ad esempio come membri di una classe).
Se non hai voglia di imparare queste limitazioni, limitati a non usare mai identificatori che iniziano per underscore.
Amaro C++, il gusto pieno dell'undefined behavior.
Grazie a entrambi
Altra domanda: concettualmente se ho vari file .cpp in ciascuno dei quali è contenuta l'implementazione di una classe l'istruzioneva inserita in ciascuno di essi?codice:using namespace std;
Si, a meno che tu non la metta in un file header che tutti includono, ma è una cosa abbastanza dannosa (sperimentato a mie spese).
Se state chiamando per i piedini mancanti,lasciate il vostro indirizzo,e i piedi di ricambio vi saranno consegnati da mio nipote Jody. E ora, io devo ritornare nel dolce abbraccio della cripta... Ma tornerò!!!
The Simpson ; AABF08 (Domenica orrenda domenica)
In linea di massima sarebbe meglio evitare in toto lo using namespace std a livello di file, restringendone l'uso a scope più ristretti (e magari importando solo i nomi che servono).
Va invece evitato nella maniera più assoluta negli header, dato che può causare casini a chi li include, che non si aspetta che così facendo si tira dentro tutto il namespace std nel namespace globale.
Amaro C++, il gusto pieno dell'undefined behavior.
Non è consentito cambiare discorso all'interno di una discussione.
Se hai un nuovo quesito, apri una nuova discussione, altrimenti si mescolano domande e risposte a discussioni che non hanno nulla a che vedere con esse: il titolo, in questo senso, indica l'argomento della discussione.
Questo per evitare che vengano poste domande alle quali non si può trovare facilmente risposta con una ricerca.
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Buona a sapersi, devo essere rimasto indietro.Originariamente inviato da MItaly
Teoricamente quando ti pare, in pratica ci sono delle limitazioni.
Lo standard C++ infatti dice (§17.4.3.1.2):
Ossia, non puoi mai usare nomi che iniziano con due underscore e nomi che iniziano con un underscore seguito da una lettera maiuscola, e non puoi usare alcun nome che inizia con un underscore nel namespace globale. In tali contesti, infatti, i nomi fatti a quella maniera sono riservati per uso da parte della libreria C++; l'uso che questa ne può fare può essere interno (se guardi negli header standard vedrai che tutti i nomi "privati" iniziano con un doppio underscore) sia esterno (se una libreria standard fornisce negli header standard delle funzioni aggiuntive oltre a quelle previste dallo standard, lo fa con nomi che iniziano per doppio underscore).
In sostanza, quindi, puoi usare solo nomi che iniziano per underscore seguito da lettera minuscola, e comunque non nel namespace globale (puoi usarli ad esempio come membri di una classe).
Se non hai voglia di imparare queste limitazioni, limitati a non usare mai identificatori che iniziano per underscore.
![]()
![]()
Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
Occhio per occhio uguale... occhio al quadrato