2017-09-26 4 views
0

ich diese Kennungkann nicht Kennung zu lösen. ‚COL“

#define COL 32 

habe ich es verwenden, um eine Anzahl von Arrays zu erstellen, die alle gut funktionieren jedoch der Teil des Codes zu debuggen, ich bin, Ich habe COL hinzugefügt, um zu beobachten (Visual Studio), und habe eine "Unable to resolve identifier" -Nachricht anstelle eines Wertes. Der Code kompiliert und läuft gut, aber ich kann bestimmte Sachen nicht überprüfen. Ich habe versucht, die Funktion zu kommentieren Workong on, falls ich etwas gemacht habe, aber das hat nicht geholfen Ich arbeite seit Wochen an dem Code, es hat immer gut funktioniert, ich habe nichts aktualisiert, ich bin total ratlos ...

+0

'COL' ist keine Variable, an allen Stellen wird' COL' im Code verwendet, es wird mit seinem Wert "ersetzt": https://en.wikipedia.org/wiki/C_preprocessor – Raxvan

+0

Ich denke, du solltest nicht Ich konnte das überhaupt nicht sehen, da es kein Bezeichner ist, oder wenn Sie dies tun können, aber Beschwerden von VS erhalten, ist es entweder ein Fehler oder eine Fehlkonfiguration. In meinen Augen ist VS absoluter BS, also wechsle zu Linux und benutze nur GCC oder Clang. – ForceBru

+0

Ich kann den Wert mit cout << "COL" << COL << "\ n"; – Flisp

Antwort

0

Makros sind ersetzt durch den Präprozessor in der frühesten Phase der Kompilierung. Es gibt kein COL Symbol in Ihrem Code danach.

Wenn Sie C++ verwenden, tun es die C++ Art und Weise:

namespace constants { 
    constexpr int coloums = 32; 
} 

Die Preprozessoren Verwendungen weniger immer und weit zwischen jedem Mal, wenn der C++ Standard überarbeitet. Wir brauchen es nicht, um Integralkonstanten zu definieren, das hat es nie getan.

+0

Danke! Ich habe alle meine #define ersetzt und jetzt kann ich alle Werte folgen. – Flisp

+0

@Flisp - Froh, dass es für dich aussortiert wurde :) – StoryTeller