Kompiluję program, który będzie działał na linuxie gcc 4.4.1 C99.
Właśnie wstawiałem moje #defines, aby oddzielić kod, który zostanie skompilowany w systemie Windows lub Linux. Jednak dostałem ten błąd.
error: macro names must be identifiers.
Używając tego kodu
#ifdef(WIN32)
/* Do windows stuff
#elif(UNIX)
/* Do linux stuff */
#endif
Jednak gdy przesiadłem się na ten błąd został naprawiony:
#if defined(WIN32)
/* Do windows stuff
#elif(UNIX)
/* Do linux stuff */
#endif
Zastanawiałem się tylko, dlaczego otrzymałem ten błąd i dlaczego #defines są różne?
Wielkie dzięki,
||
#if defined(NAME)
od samego początku i uniknęli tworzenia#ifdef
oświadczenia.i
są takie same,
ale aby zrobić kilka rzeczy naraz, możesz użyć zdefiniowanych, takich jak
źródło
#ifdef
sprawdza, czy zostało zdefiniowane makro o tej nazwie,#if
ocenia wyrażenie i sprawdza, czy jest to prawdaźródło
#if defined
a#ifdef
.