Ich kompiliere mein Programm, das unter Linux gcc 4.4.1 C99 ausgeführt wird.
Ich habe gerade meine #defines eingegeben, um den Code zu trennen, der unter Windows oder Linux kompiliert wird. Ich habe jedoch diesen Fehler erhalten.
error: macro names must be identifiers.
Mit diesem Code
#ifdef(WIN32)
/* Do windows stuff
#elif(UNIX)
/* Do linux stuff */
#endif
Als ich dies änderte, wurde der Fehler behoben:
#if defined(WIN32)
/* Do windows stuff
#elif(UNIX)
/* Do linux stuff */
#endif
Ich habe mich nur gefragt, warum ich diesen Fehler habe und warum die #defines unterschiedlich sind.
Danke vielmals,
||
#if defined(NAME)
von Anfang an mitgegangen wären und es vermieden hätten, eine#ifdef
Erklärung abzugeben.und
sind gleich,
Aber um mehrere Dinge gleichzeitig zu tun, können Sie definierte verwenden, wie z
quelle
#ifdef
prüft, ob ein Makro mit diesem Namen definiert wurde,#if
wertet den Ausdruck aus und prüft auf einen wahren Wertquelle
#if defined
und#ifdef
.