#ifdef
применяется только к макросам препроцессора, определенным с помощью #define
, но не к таким символам, как имена функций и переменные. Вы можете представить себе препроцессор как отдельный отдельный предварительный шаг, например, выполнение кода через Perl-сценарий, который происходит до того, как «настоящий» компилятор добьется успеха.
Таким образом, нет никакого программного способа проверить, определены ли символы, такие как printf
, в текущей области. Если вы используете один, и он не определен, вы получите ошибку компилятора. Обычно нужно сделать #include
файл заголовка с необходимым определением в исходном файле, на который вы ссылаетесь, а не писать исходный файл, который будет адаптироваться к различным возможным наборам заголовков.
В качестве хака, и в зависимости от вашей среды и конкретной проблемы, заголовочный файл, который определяет printf
(или любую функцию, которая вас интересует), может также содержать некоторый препроцессор #define
s, который вы можете проверить.