Ist es möglich, eine statische Variable in einer #define
Direktive zu deklarieren?statische Variable in #define Direktive C++
// header file
#define TEXT_ENUM
#ifdef TEXT_ENUM
#define TEXT_HANDLING_MACRO \
static const char * TEXT[]; \
static const char * getText(int _enum) { \
return TEXT[_enum]; \
}
#else
#define TEXT_HANDLING_MACRO
#endif
struct Foo {
TEXT_HANDLING_MACRO
};
// cpp file
#include "foo.h"
const char * Foo::TEXT[] = {
"ONE",
"TWO",
"THREE",
0
};
Wie Compiler static const char * auflösen wird, wenn ich diese Header-Datei in einer anderen Datei enthalten und versuchen, den Zugang Foo::TEXT[]
.
Meinen Sie 'Foo :: TEXT [] '? Es sollte dann funktionieren. –
Ich bekomme einen undefinierten Verweis auf 'Packet :: TEXT 'Fehler. – has
@has: Das bedeutet, dass Ihre '.cpp' Datei fehlt. In dem, was Sie oben angegeben haben, ist 'Packet :: TEXT' perfekt definiert. – AnT