Token für "=" ist nicht gültig in Präprozessor-Ausdrücke

Ich habe ein Programm:

#include <iostream>

#define _DEBUG = 1

using namespace std;
int main() {
        #if (_DEBUG == 1)
                cout << "hello : " <<endl;
        #endif

        return 0;
}

Erstellung dieser gibt die Fehlermeldung:

$ g++ a.cpp
a.cpp:7:7: error: token "=" is not valid in preprocessor expressions
$ g++ --version
g++ (MacPorts gcc46 4.6.3_8) 4.6.3

Dachte ich == ist die Gleichheit bedingte operator?

  • Benutzen Sie keine Namen beginnen mit einem Unterstrich und einer weiteren Unterstrich oder einem Großbuchstaben; Sie sind reserviert für die Umsetzung zu tun, wie Sie wollen. Es bedeutet, dass Ihre Nutzung des _DEBUG kollidieren könnten mit etwas in der system-Header, und es wäre Ihr code fehlerhaft ist. Tatsächlich, Sie sind in der Regel am besten aus, nicht erstellen von Namen, die mit einem Unterstrich beginnen bei alle.
  • bisschen nit: die reservierten Bezeichner sind Namen, die beginnen mit einem Unterstrich gefolgt von einem Großbuchstaben und die Namen, die enthalten zwei aufeinanderfolgende Unterstriche. So zum Beispiel A__B vorbehalten ist, sowie __AB.
  • Sie sind richtig, dass Namen, die mit doppelten Unterstrich auch vorbehalten in C++. Ich Neige dazu zu denken, dass Sie als eine separate Regel von "nicht-start-Bezeichner mit Unterstrich', nicht zuletzt, weil C nicht über die Doppel-Unterstrich Einschränkung.
Schreibe einen Kommentar