что это значит определить макро функцию как (0)? - PullRequest
0 голосов
/ 07 сентября 2018

Я вижу в некотором исходном коде такое определение

#define somemacro(a,b,c) (0)

И я вижу в том же исходном коде:

#define anothermacro(a,b,c) (1)

Может ли какой-либо орган объяснить этот вид макроопределения? Какова цель такого определения?

1 Ответ

0 голосов
/ 07 сентября 2018

Обычно неиспользуемые параметры функции, такой как макрос, встречаются в следующей ситуации:

#ifdef A_IS_GREAT_ALWAYS
  #define anothermacro(a,b,c) (1)
#else
  #define anothermacro(a,b,c) ((a)>(b)+(c))
#endif

Без параметров будет нарушена компоновка в следующих местах, когда A_IS_GREAT_ALWAYS не определен.

...
if (anothermacro(foo, bar, baz))
...

Прекомпилятор переводит пример кода в:

  if ((1))

или

  if (((foo)>(bar)+(baz)))

в зависимости от того, определен A_IS_GREAT_ALWAYS или нет.

...