Dupliqué possible: strong>
jetons alternatifs C ++? P> blockQuote>Je travaille sur une mission en C ++ avec un de mes amis et nous faisons beaucoup de codage sur son ordinateur / environnement (un MacBook Pro avec Eclipse). Dans une partie du code, il a des conditions écrites en utilisant
et code> et
ou code> plutôt que
&& code> et
|| code>. Le code compile tout simplement bien sur son ordinateur, mais lorsque j'essaie de le compiler sur mon ordinateur à la maison (un PC avec Visual Studio 2010), je reçois des erreurs de compilateur et je suis obligé de les changer. Mon ami atteste également que cette syntaxe a fonctionné à l'aide d'EMACS / G ++ dans un environnement Linux. P>
Je n'avais jamais vu ce type de chose auparavant. Est-ce utilisé largement ou pris en charge par la plupart des compilateurs? P>
5 Réponses :
Il est soit causé par une extension de compilateur ou un S'il s'agit d'une extension de compilateur et que vous souhaitez éviter de passer à travers et de changer tout le #define code> ailleurs dans le code source, éventuellement à partir de
iso646.h code>
définir code> ing
ou code> doit être
|| code> et
et code> pour être
&& code>. Vous pouvez également voir quelque chose comme utiliser
pas code> à la place de
! Code> aussi.
ou code> et
et code> sur
|| code> et
&& code>, ajoutez simplement un
#define code> #define code> #define code> s de votre propre en haut: p>
Aurait-il plus de sens alors de toujours simplement utiliser la version standard? On dirait que c'est le plan d'action le plus intelligent.
Non, et code> /
ou code> /
eq code> /
bitand code> / etc. sont des mots-clés de C ++. Ce sont des synonymes pour les opérateurs.
@Chris Pouvez-vous vraiment compter quelque chose qui doit être définir code> d comme mot clé?
@Seth - ils ne doivent pas nécessairement être #define code> d. Ce sont des mots-clés. Visual C ++ ne suit pas les normes.
@Seth: Selon la norme C ++, ils sont des mots réservés et ne peuvent pas être définis comme des macros. Dans Visual C ++, comme C, ils sont activés par iso646.h code>. Mais si Visual C ++ utilise des macros pour les implémenter, c'est un détail de mise en œuvre. Cela ne le rend pas légal pour le programmeur de
#undef code> ou redéfinissez-les (malheureusement, puisque j'ai voulu
Pourriez-vous ajouter définir code> S au sommet pour les déplacer?
Strictement parler, non, car et code> et
ou code> sont des mots-clés et ne peuvent pas être définis comme des macros.
@Jamesmcnellis: Strictement parlant, ce sont des jetons alternatifs, pas des mots-clés. Vous pouvez toujours le faire car techniquement #define et && code> est simplement une autre façon d'épeler
#define && && code> qui n'est pas légal.
@Chals: Oh. Eh bien, il est très trompeur qu'ils sont énumérés dans le sous-paragraphe nommé "Mots-clés". Vous avez raison, bien sûr.
Ils s'appellent Synonymes de l'opérateur , et Ils font apparemment partie de la norme, mais je ne sais pas à quel point ils sont largement soutenus. P>
Être c ++, ne devrait-il pas être
Non, étant C ++, vous n'avez besoin de rien. Ce sont des mots-clés. Blâmer votre compilateur si cela ne fonctionne pas.
@MARTINHO: CISO646 CODE> est juste un alias pour
iso646.h code>, car il n'y a pas de noms pour entrer dans l'espace de noms STD. Et l'un ou l'autre est un non-op en mode C ++ avec n'importe quel compilateur conforme. Étant donné que l'ajout
#include
Il existe une poignée de "représentations alternatives": Visual C ++ ne prend en charge que comme des mots-clés si vous compilez avec le drapeau et code>,
and_eq code>,
bitand code>,
bititor code>, < Code> complex code>,
pas code>,
non_eq code>,
ou code>,
ou_eq code>,
xor code>, et
xor_eq code>. Ils sont une fonctionnalité de langue standard de C ++. P>
/ za code> (mode de conformité des normes). p>
Voir aussi: msdn.microsoft.com/en-us/library/34h23df8.aspx sous "iso646.h non activé"