Можем ли мы вызывать функции в выражении #if? - PullRequest
2 голосов
/ 15 ноября 2010

Возможно ли это в C?

#if functionA() < functionB() 
    //... 
#endif 

Ответы [ 4 ]

7 голосов
/ 15 ноября 2010

Только если functionA и functionB являются макросами, а не функциями.

0 голосов
/ 17 ноября 2015

Нет, мы не можем вызвать функцию как условие для директивы #if.Условие в #if должно быть только константным выражением.

0 голосов
/ 15 ноября 2010

Если functionA и functionB развернуть во время компиляции до целочисленных констант, то их можно сравнить.Это может произойти только в том случае, если они являются макросами, а не функциями, как объясняет dan04.Более подробную информацию можно найти в документации gcc для #if, которая обычно применяется независимо от того, какой компилятор или платформу вы используете.

0 голосов
/ 15 ноября 2010

Оператор #if является оператором препроцессора, функции кода недоступны (но макросы есть).

C Программирование предоставляет хороший простой обзориспользование препроцессора C.

...