Que dit la norme C++ à propos de l'utilisation de signes dollar dans les identificateurs, tels que Hello$World
? Sont-ils légaux?Les signes dollar sont-ils autorisés dans les identifiants en C++ 03?
Répondre
Un identifiant C++ peut être composé de l'un des éléments suivants: _ (trait de soulignement), les chiffres 0-9, les lettres a-z (majuscules et minuscules) et ne peut pas commencer par un nombre.
Il existe un certain nombre d'exceptions car C99 autorise les extensions de la norme (par exemple visual studio).
Ils sont illégaux. Les seuls caractères légaux dans les identifiants sont les lettres, les chiffres et _. Les identifiants ne peuvent pas non plus commencer par des nombres.
FYI: Bien que cela soit généralement interdit par la norme gcc, voir http://gcc.gnu.org/onlinedocs/gcc/Dollar-Signs.html#Dollar-Signs – lothar
Ceci permet une compatibilité descendante. Il ne devrait pas être utilisé pour un code moderne. –
Ils ne sont pas autorisés en C++. Cependant, certains langages dérivés C/C++ (tels que Java et JavaScript) les autorisent.
Illégal. Je pense que le signe dollar et le backtick sont les seuls signes de ponctuation sur mon clavier qui ne sont pas utilisés en C++ quelque part (le signe "%" est dans les chaînes de format, qui sont en C++ par référence au standard C).
% est également l'opérateur de module. – RBerteig
Ah, merci. Cela m'avait échappé. –
Ne pas oublier le caractère @ –
Non légal, mais la plupart des compilateurs les supportent, notez que cela peut dépendre de la plate-forme, donc gcc sur le bras ne les supporte pas en raison des restrictions d'assemblage.
La section pertinente est "2.8 Identifiants [lex.name]". A partir du jeu de caractères de base, les seuls caractères valides sont A-Z a-z 0-9 et _. Cependant, des caractères comme é (U + 00E9) sont également autorisés. Selon votre compilateur, vous devrez peut-être entrer é comme \ u00e9, cependant.
En C++ 03, les réponses données précédemment sont correctes: elles sont illégales. Dans C++11 la situation a changé cependant:
La réponse ici est « Peut-être »:
Selon §2.11, les identifiants peuvent consister en chiffres et identificateur-nondigits, en commençant par un de ces derniers . Identifiant-de nondigits sont les a-z
, A-Z
et soulignent, en plus depuis C++ 11 ils comprennent noms-caractère universel (par exemple \uBEAF
, \UC0FFEE32
), et d'autres caractères définis par la mise en œuvre usual. Donc, la mise en œuvre est définie si l'utilisation de $
dans un identificateur est autorisée. VC10 et plus le supporte, peut-être aussi les versions antérieures. Il prend même en charge les identifiants comme こんばんは
.
Mais: Je ne les utiliserais pas. Rendre les identifiants aussi lisibles et portables que possible. $
est implémenté défini et donc pas portable.
- 1. signe dollar dans les méthodes javascript
- 2. Remplacer les signes diacritiques en Javascript
- 3. CSS: les classes et les identifiants sont-ils interchangeables?
- 4. chaînes terminées par dollar
- 5. Filtre jQuery à travers les identifiants, puis capture les correspondances
- 6. Un bug dans les identifiants CSS pour AS3?
- 7. Les attributs sont-ils autorisés dans une demande d'authentification SAML?
- 8. URL et signes plus
- 9. Placez dynamiquement les informations mysql dans les divs avec les identifiants
- 10. opérateur pl/sql dollar?
- 11. Supprimer les signes de ponctuation sauf l'apostrophe Regex
- 12. Obtenir des données de C# vers Excel 03/07
- 13. Utiliser les identifiants de connexion PHPBB2 sur mon site
- 14. Bibliothèque arborescente pour PHP utilisant les identifiants gauche et droit
- 15. Quel est l'avantage de limiter les lancements autorisés par une fonction C++?
- 16. Les identifiants doivent avoir le suffixe correct (fxcop)
- 17. Que dois-je utiliser pour les noms et les identifiants dans les formulaires avec des lignes répétées?
- 18. Comment créer des identifiants uniques en Perl?
- 19. Créer des identifiants uniques dans VFP
- 20. Code COBOL japonais: règles pour les littéraux et les identifiants G?
- 21. Est-ce que .NET WebRequest/WebResponse peut traduire les accents, les signes diacritiques et les entités correctement?
- 22. Lecture dans les tableaux en C++
- 23. Les identifiants de mysql sont-ils garantis, même si les lignes sont supprimées?
- 24. Quelle méthode est utilisée pour obtenir les identifiants de courrier dans les listes CC et BCC dans JavaMail?
- 25. google analytics - domaines autorisés
- 26. Limiter les types de contrôle enfant autorisés dans un contrôle de modèles ASP.NET
- 27. Comment puis-je additionner les tailles de fichiers dans bash, en regroupant les résultats par date?
- 28. mettre des images sur d'autres ordinateurs sous les identifiants de connexion
- 29. Enfilez les débutants dans C#
- 30. Concat les chaînes et les nombres en C++?
@Zifre: Je crois qu'il s'interroge sur le standard C++, car tous les compilateurs ne sont pas 100% conformes à la norme et certains ont leurs propres extensions qui peuvent le rendre légal. –
La norme C99 permet explicitement à une plateforme de définir des caractères d'identification légale supplémentaires. Le compilateur Decus C pour PDP11 et VAX permettait $, car la plupart des appels système incluaient un $ dans leur nom. "Le $ est réservé à Digital". Je n'ai pas les anciennes normes C ou la norme C++ à portée de main pour vérifier si cela aurait été conforme ... – RBerteig
@Zifre: Votre commentaire était-il plus nécessaire?Et puisque vous avez besoin de demander, non, il ne pourrait pas simplement l'essayer dans son compilateur favori, parce que cela lui dirait si le compilateur l'a permis, pas si la langue l'a fait. En C++, c'est une distinction importante. – jalf