Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [C++] Underscore prima del nome variabile

    Quando si usa in C++ l'underscore prima del nome di una variabile?
    Ad esempio:
    _x=3;

  2. #2
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    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

  3. #3
    Teoricamente quando ti pare, in pratica ci sono delle limitazioni.
    Lo standard C++ infatti dice (§17.4.3.1.2):
    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).)
    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.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Grazie a entrambi
    Altra domanda: concettualmente se ho vari file .cpp in ciascuno dei quali è contenuta l'implementazione di una classe l'istruzione
    codice:
    using namespace std;
    va inserita in ciascuno di essi?

  5. #5
    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)

  6. #6
    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.

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315

    Moderazione

    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

  8. #8
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    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.
    Buona a sapersi, devo essere rimasto indietro.

    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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.