Я компилирую свою программу, которая будет работать на linux gcc 4.4.1 C99.
Я просто вставлял свои #defines, чтобы отделить код, который будет скомпилирован либо в Windows, либо в Linux. Однако я получил эту ошибку.
error: macro names must be identifiers.
Используя этот код
#ifdef(WIN32)
/* Do windows stuff
#elif(UNIX)
/* Do linux stuff */
#endif
Однако когда я перешел на это, ошибка была исправлена:
#if defined(WIN32)
/* Do windows stuff
#elif(UNIX)
/* Do linux stuff */
#endif
Мне просто интересно, почему я получил эту ошибку и почему #defines разные?
Большое спасибо,
||
#if defined(NAME)
самого начала и не сделали#ifdef
заявления.и
одинаковые,
но чтобы делать несколько вещей одновременно, вы можете использовать определенные, например
источник
#ifdef
проверяет, определен ли макрос с таким именем,#if
оценивает выражение и проверяет истинное значениеисточник
#if defined
и#ifdef
.