OVH Cloud OVH Cloud

namespace

27 réponses
Avatar
Guillaume Gourdin
Bonjour !

VC6 ne semble pas accepter les noms de namespace commençant par un chiffre.
Est-ce normal ou est-ce un bug ?

10 réponses

1 2 3
Avatar
Vincent Richard

VC6 ne semble pas accepter les noms de namespace commençant par un
chiffre. Est-ce normal ou est-ce un bug ?


En fait, il me semble que ça ne vaut pas uniquement pour les namespaces,
mais aussi pour les identifiants, les mots-clés, etc. et ce n'est pas
seulement avec VC6.

A mon avis, c'est pour pouvoir différencier les nombres des identifiants
lors de l'analyse lexicale :

int 123abc = 456;

Une hypothèse : une fois le '1', puis le '2' et '3' reconnus et arrivé au
'a', il n'est pas possible (ou plutôt pas facile ?) de revenir sur la
décision qu'a prise l'AL (au moment du '1'), à savoir que ce qu'il est en
train de reconnaître est un nombre.

C'est sans aucun doute faisable mais la norme C++ n'a peut-être pas voulu
imposer ce genre de choses.

A confirmer...

Vincent

--
vmime, une bibliothèque C++ sous licence GPL pour parser et générer
des messages au format MIME : http://www.sourceforge.net/projects/vmime/

Avatar
Vianney Lançon
Le Wed, 10 Dec 2003 10:29:13 +0100, dans fr.comp.lang.c++,
Guillaume Gourdin a dit :
Bonjour !

VC6 ne semble pas accepter les noms de namespace commençant par un chiffre.
Est-ce normal ou est-ce un bug ?


Tu n'as pas le droit de faire des identifiants commançant par un
chiffre en c++. Ajoutes au moins une lettre devant.

--
Vianney LANÇON
radix omnia malorum prematurae optimisatia est
-- Donald Knuth

Avatar
Serge Paccalin
Le mercredi 10 décembre 2003 à 11:37, Vincent Richard a écrit dans
fr.comp.lang.c++ :

VC6 ne semble pas accepter les noms de namespace commençant par un
chiffre. Est-ce normal ou est-ce un bug ?


En fait, il me semble que ça ne vaut pas uniquement pour les namespaces,
mais aussi pour les identifiants, les mots-clés, etc. et ce n'est pas
seulement avec VC6.

A mon avis, c'est pour pouvoir différencier les nombres des identifiants
lors de l'analyse lexicale :

int 123abc = 456;

Une hypothèse : une fois le '1', puis le '2' et '3' reconnus et arrivé au
'a', il n'est pas possible (ou plutôt pas facile ?) de revenir sur la
décision qu'a prise l'AL (au moment du '1'), à savoir que ce qu'il est en
train de reconnaître est un nombre.

C'est sans aucun doute faisable mais la norme C++ n'a peut-être pas voulu
imposer ce genre de choses.

A confirmer...


Plus simple encore : une constante hexa. Si on tolérait les identifiants
commençant par un chiffre, 0xff en serait un valide.

--
___________ 2003-12-10 12:14:31
_/ _ _`_`_`_) Serge PACCALIN -- sp ad mailclub.net
_L_) Il faut donc que les hommes commencent
-'(__) par n'être pas fanatiques pour mériter
_/___(_) la tolérance. -- Voltaire, 1763


Avatar
Alexandre
"Vianney Lançon" a écrit dans le message de
news:
Le Wed, 10 Dec 2003 10:29:13 +0100, dans fr.comp.lang.c++,
Guillaume Gourdin a dit :
Bonjour !

VC6 ne semble pas accepter les noms de namespace commençant par un
chiffre.


Est-ce normal ou est-ce un bug ?


Tu n'as pas le droit de faire des identifiants commançant par un
chiffre en c++. Ajoutes au moins une lettre devant.

--
Vianney LANÇON
radix omnia malorum prematurae optimisatia est
-- Donald Knuth


Une lettre ou un _


Avatar
Vianney Lançon
Le Wed, 10 Dec 2003 14:43:27 +0100, dans fr.comp.lang.c++,
Alexandre a dit :

"Vianney Lançon" a écrit dans le message de
news:

Tu n'as pas le droit de faire des identifiants commançant par un
chiffre en c++. Ajoutes au moins une lettre devant.


Une lettre ou un _




Il y a des restrictions forte sur l'usage d'un _ en début
d'instruction. Dans un certain nombre de cas ils sont réservé.
(double _, _ Majuscule). Donc il ne faut pas commancer un nom par une
_. Même s'il y a des cas ou la norme et l'implémentation le permettent
c'est jouer avec le feu.

--
Vianney LANÇON
radix omnia malorum prematurae optimisatia est
-- Donald Knuth


Avatar
Alain Naigeon
"Vianney Lançon" a écrit dans le message news:

Le Wed, 10 Dec 2003 14:43:27 +0100, dans fr.comp.lang.c++,
Alexandre a dit :

"Vianney Lançon" a écrit dans le message de
news:

Tu n'as pas le droit de faire des identifiants commançant par un
chiffre en c++. Ajoutes au moins une lettre devant.


Une lettre ou un _




Il y a des restrictions forte sur l'usage d'un _ en début
d'instruction. Dans un certain nombre de cas ils sont réservé.
(double _, _ Majuscule). Donc il ne faut pas commancer un nom par une
_. Même s'il y a des cas ou la norme et l'implémentation le permettent
c'est jouer avec le feu.


D'accord mais c'est pas le même statut d'interdiction,
_toto est un identificateur déconseillé,
tandis que
1toto n'est pas un identificateur.

Et pas seulement en C++ (en fait, personnellement je n'ai
pas connu de langage où ce serait un identificateur).


--

Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - - Strasbourg, France


--
Vianney LANÇON
radix omnia malorum prematurae optimisatia est
-- Donald Knuth




Avatar
Fabien LE LEZ
On Wed, 10 Dec 2003 12:16:03 +0100, Serge Paccalin
wrote:

Si on tolérait les identifiants
commençant par un chiffre, 0xff en serait un valide.


Idem avec 42ul.

--
;-)

Avatar
Michel Michaud
Dans news:3fd7aaa1$0$29074$, Alain
D'accord mais c'est pas le même statut d'interdiction,
_toto est un identificateur déconseillé,
tandis que
1toto n'est pas un identificateur.

Et pas seulement en C++ (en fait, personnellement je n'ai
pas connu de langage où ce serait un identificateur).


Vive COBOL !

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/

Avatar
Gabriel Dos Reis
"Alain Naigeon" writes:

| 1toto n'est pas un identificateur.
|
| Et pas seulement en C++ (en fait, personnellement je n'ai
| pas connu de langage où ce serait un identificateur).

dromion[10:41]% gs -dNODISPLAY
GNU Ghostscript 6.53 (2002-02-13)
Copyright (C) 2002 artofcode LLC, Benicia, CA. All rights reserved.
This software comes with NO WARRANTY: see the file COPYING for
details.
GS>/1toto (Hello World) def
GS>1toto = (Hello World)
GS>

-- Gaby
Avatar
kanze
"Alain Naigeon" wrote in message
news:<3fd7aaa1$0$29074$...
"Vianney Lançon" a écrit dans le message news:

Le Wed, 10 Dec 2003 14:43:27 +0100, dans fr.comp.lang.c++,
Alexandre a dit :

"Vianney Lançon" a écrit dans le message de
news:

Tu n'as pas le droit de faire des identifiants commançant par un
chiffre en c++. Ajoutes au moins une lettre devant.


Une lettre ou un _


Il y a des restrictions forte sur l'usage d'un _ en début
d'instruction. Dans un certain nombre de cas ils sont réservé.
(double _, _ Majuscule). Donc il ne faut pas commancer un nom par
une _. Même s'il y a des cas ou la norme et l'implémentation le
permettent c'est jouer avec le feu.


D'accord mais c'est pas le même statut d'interdiction, _toto est un
identificateur déconseillé, tandis que 1toto n'est pas un
identificateur.

Et pas seulement en C++ (en fait, personnellement je n'ai pas connu de
langage où ce serait un identificateur).


Cobol. Si mes souvenirs sont bon, « 1 - 2 » est une expression avec deux
constantes, mais « 1-2 » est un identificateur légal. (Mais je ne suis
pas sûr. Ça fait plus de 20 ans que je n'ai pas régardé du côté Cobol,
et c'est possible qu'il exige au moins une lettre.)

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16




1 2 3