Приведение к unsigned long в определении макроса приводит к ошибке компиляции - PullRequest
0 голосов
/ 15 мая 2018

Следующий код генерирует следующую ошибку компиляции:

Код:

int main(void)
{
    #define a ((unsigned long) 0)
    #if a > 2
    while(1);
    #endif
}

Ошибка:

main.c: In function 'main':
main.c:4:26: error: missing binary operator before token "long"
     #define a ((unsigned long) 0)
                          ^
main.c:5:9: note: in expansion of macro 'a'
     #if a > 2
         ^
The command 'arm-none-eabi-gcc.exe' failed with exit code '1'.

Может ли кто-нибудь помочь понять, почему это происходит, только если использовать макрос «a» в выражении «#if»?

...