Warum kompiliert das nicht?Verwenden von Makro mit Zeichenfolge schlägt auf VC 2015 fehl
char programDate[] = "("__DATE__")";
Aber dies stellt in Ordnung (siehe Raum):
char programDate[] = "(" __DATE__")";
I VC2015 wissen unterstützt jetzt literal-Operatoren. Aber sollte das nicht in der Kompilierungsphase sein? __DATE__
sollte vom Pre-Prozessor verarbeitet worden sein. Was geht hier vor sich?
Ich dachte an einige Mix-Match-Problem mit Unicode/Nicht-Unicode-Build - aber es hilft nicht. Es ist nicht nur Problem mit vordefinierten Makros, aber mit Benutzer auch definiert:
#define MACRO "abc"
char data[] = "("MACRO")";
EDIT:
Error C3688 invalid literal suffix '__DATE__'; literal operator or literal operator template 'operator ""__DATE__' not found
Ich denke, Sie können etwas in Ihrem Kommentar über benutzerdefinierte Literale sein. Im Allgemeinen sind C++ Parser ** maximal munch **, für jedes Token schlucken sie so viele Zeichen wie möglich, bis es kein gültiges Token mehr ist. –
Sie könnten den Kompilierungsfehler schreiben. –