difference between #if defined(WIN32) and #ifdef(WIN32)

Viewed 119457

I am compiling my program that will running on linux gcc 4.4.1 C99.

I was just putting my #defines in to separate the code that will be compiled on either windows or linux. However, I got this error.

error: macro names must be identifiers.

Using this code

#ifdef(WIN32)
/* Do windows stuff
#elif(UNIX)
/* Do linux stuff */
#endif

However, when I changed to this the error was fixed:

#if defined(WIN32)
/* Do windows stuff
#elif(UNIX)
/* Do linux stuff */
#endif

I was just wondering why I got that error and why the #defines are different?

Many thanks,

4 Answers
#ifdef WIN32
/* Do windows stuff
#elif(UNIX)
/* Do linux stuff */
#endif

is correct

Related