"or" und "and" als variablennamen in *.cpp :eek:
-
hallo,
ich hab hier nen programm, was ich gerne kompiliert hätte.
leider kommt da das da vor:typedef struct ccodes { ubyte or,and; //or is low byte, and is high byte } ccodes;
und dann natürlich ganz viele instanzen von diesem struct.
natürlich sagt der compiler da:syntax error before `||' token
kann ich irgendwie ausschalten, dass der "and" durch "&&" ersetzt? (gcc / windows / devcpp )
oder muss ich alles von hand ersetz0rn?
-
or und and sind beides Schlüsselworte der Sprache C++ und für Variablennamen tabu. Das sollte sich nirgends ausschalten lassen.
-
#define or or_ #define and and_
Das sollte gehen.
-
"or" cannot be used as a macro name as it is an operator in C++
dann schmeiß ich mal "search and replace" an...
-
-fno-operator-names
Do not treat the operator name keywords and, bitand, bitor, compl, not, or and xor as synonyms as keywords.Aus der GCC-Doku
-
betrug schrieb:
"or" cannot be used as a macro name as it is an operator in C++
dann schmeiß ich mal "search and replace" an...
komisch... man kann doch sogar ein
#define private public
machen, wieso gehts da nicht?
-
Weil private keine operator sondern ein modifier ist.
-
otze schrieb:
betrug schrieb:
"or" cannot be used as a macro name as it is an operator in C++
dann schmeiß ich mal "search and replace" an...
komisch... man kann doch sogar ein
#define private public
machen
In Standard-C++ nicht mal das. Denn (17.4.3.1.1):
A translation unit that includes a header shall not contain any macros that define names declared or defined in that header. Nor shall such a translation unit define macros for names lexically identical to keywords.
-
Ein Gast schrieb:
-fno-operator-names
Do not treat the operator name keywords and, bitand, bitor, compl, not, or and xor as synonyms as keywords.Aus der GCC-Doku
Und was macht dann jemand, der keinen GCC verwendet?
-
groovemaster schrieb:
Ein Gast schrieb:
-fno-operator-names
Do not treat the operator name keywords and, bitand, bitor, compl, not, or and xor as synonyms as keywords.Aus der GCC-Doku
Und was macht dann jemand, der keinen GCC verwendet?
GCC verwenden? :p
Ne die Fehlermeldung kommt schon vom GCC (oder von einem anderen Compiler mit gleicher Fehlermeldung, was unwahrscheinlich ist) und daher kann man schon davon ausgehen, dass der Threadstarter den GCC benutz und somit mit dem Switch was anfangen kann.
-
Ben04 schrieb:
Ne die Fehlermeldung kommt schon vom GCC (oder von einem anderen Compiler mit gleicher Fehlermeldung, was unwahrscheinlich ist) und daher kann man schon davon ausgehen, dass der Threadstarter den GCC benutz und somit mit dem Switch was anfangen kann.
Ja, der Threadersteller benutzt ja auch GCC. Nur schreibt man keine C/C++ Programme, damit sie dann nur auf einem Compiler übersetzbar sind. Dieses Flag ist nur eine temporäre Lösung, was fürs schnelle Kompilieren schon ok ist. Aber du weisst nicht, ob Programmierer ABC den Quellcode irgendwann mal mit Compiler XYZ kompiliert, der nicht so ein Flag mitbringt.
-
ok, das hat schonmal geklappt.
wer hätte gedacht, dass sowas in der doku steht...
danke.
(aber wenn da noch mehr solche sachen drin sind, dann besorg ich mir bald den original-compiler...)