[résolu][prépocesseur] expression incorrect
J'ai un pti problème avec un bon de code.
Je ne met que ce qui nous intéresse:
main.h
Code:
1 2 3 4 5 6 7 8 9 10 11
| #ifndef SYSTEM
#ifdef MACOSX
#define SYSTEM "macosx"
#endif
#ifdef LINUX
#define SYSTEM "linux"
#endif
#ifdef WIN32
#define SYSTEM "win32"
#endif
#endif |
main.c
Code:
1 2 3 4 5 6 7 8
|
#if (SYSTEM == "linux") || (SYSTEM == "macosx")
strcpy(file_user_app_data, getenv("HOME"));
strcat(file_user_app_data, ".");
#else
strcpy(file_user_app_data, getenv("APPDATA"));
#endif
strcat(file_user_app_data, DIRNAME_USER_APP_DATA); |
Je passe le paramètre -DWIN32 au compilateur (dev-c++).
Il me met cette erreur:
Code:
1 2 3
| src/main.c:39:10: token ""win32"" is not valid in preprocessor expressions
make.exe: *** [obj/main.o] Error 1 |
La ligne 39 c'est
Code:
#if (SYSTEM == "linux") || (SYSTEM == "macosx")
Je ne comprend pas où j'ai commis l'erreur.
ps: le WIN32 me servira plutard pour une partie de code.
Re: [prépocesseur] expression incorrect
Citation:
Envoyé par will11
J'ai un pti problème avec un bon de code.
Je ne met que ce qui nous intéresse:
main.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
#ifndef SYSTEM
#ifdef MACOSX
#define SYSTEM "macosx"
#endif
#ifdef LINUX
#define SYSTEM "linux"
#endif
#ifdef WIN32
#define SYSTEM "win32"
#endif
#endif |
Marche pas.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
#include <stdio.h>
#define MACOSX 1
#define LINUX 2
#define WIN32 3
int main (void)
{
#ifndef SYSTEM
#error SYSTEM must be defined : Use -DSYSTEM=<system> with system ::= MACOSX | LINUX | WIN32
#if SYSTEM == MACOSX
printf ("The system is Mac-OS/X\n");
#elif SYSTEM == LINUX
printf ("The system is Linux/X\n");
#elif SYSTEM == WIN32
printf ("The system is Win 32\n");
#else
printf ("Unknown system (%d)\n", SYSTEM);
#endif
#endif
return 0;
} |
et sur la ligne de commande, par exemple :
Code:
gcc ... -DSYSTEM=LINUX
Sans -DSYSTEM... :
Code:
1 2 3 4 5
|
Compiling: main.c
main.c:20:2: #error SYSTEM must be defined : Use -DSYSTEM=<system> with system ::= MACOSX | LINUX | WIN32
Process terminated with status 1 (0 minutes, 0 seconds)
1 errors, 0 warnings |
avec -DSYSTEM=LINUX
Code:
The system is Linux