Работает ли #ifdef (или другие директивы препроцессора) для объявлений функций (для проверки работоспособности) Существование)?

Почему следующий код не работает должным образом?

void foobar(int);

#ifndef foobar
  printf("foobar exists");
#endif

Он всегда печатает сообщение; очевидно, что он не может обнаружить существование функции как объекта. (Это проблема перегрузки?)

Почему #ifdef (или его варианты) не может обнаружить объявления функций? Декларации должны быть доступны на предварительномобработка, так что она должна работать, не так ли? Если нет, есть ли альтернатива или обходной путь?

5
задан Brian Tompsett - 汤莱恩 14 March 2016 в 19:54
поделиться