Ich habe auf Stackoverflow nach einer Antwort gesucht, aber ich kann nichts Relevantes finden.
Ich versuche, eine statische Strukturinstanz mit Anfangswerten durch Angabe ihrer Tags zu initialisieren, aber ich erhalte einen Fehler bei der Kompilierung Zeit:
src/version.cpp:10: error: expected primary-expression before ‘.’ token
Hier ist der Code:
// h
typedef struct
{
int lots_of_ints;
/* ... lots of other members */
const char *build_date;
const char *build_version;
} infos;
Und der fehlerhafte Code:
// C
static const char *version_date = VERSION_DATE;
static const char *version_rev = VERSION_REVISION;
static const infos s_infos =
{
.build_date = version_date, // why is this wrong? it works in C!
.build_version = version_rev
};
const infos *get_info()
{
return &s_infos;
}
Die Grundidee ist also, die Initialisierung der "anderen Mitglieder" zu umgehen und nur die relevanten build_date
y build_version
Werte. Das hat in C funktioniert, aber ich kann nicht herausfinden, warum es in C++ nicht funktioniert.
Irgendwelche Ideen?
éditer :
Ich weiß, dass dieser Code wie einfaches C aussieht, und das ist er auch. Das ganze Projekt ist in C++, so dass ich C++-Dateierweiterungen verwenden muss, um das Makefile-Abhängigkeitschaos zu vermeiden ( %.o: %.cpp
)