Я пишу код, который зависит от того, включен ли заголовочный файл. Если файл включен, я хочу некоторые дополнительные функции. Есть ли способ сделать это, возможно, с #if? Использование C btwМожно ли добавить определенные части кода в зависимости от того, определен ли файл заголовка или нет в C?
ответ
Только #define
символ в этом заголовке и используйте #ifdef
позже.
header.h
#define HAVE_IPV6
some_file.c
#ifdef HAVE_IPV6
/* code */
#endif
Существует также проблема использования #include. Моя программа не знает, существует ли заголовок или нет, поэтому мне нужно обернуть #include в какую-то проверку, иначе я получу ошибку, если она не определена. – user1429039
методика обычно используется с заголовками C называется включают в себя охрану. Основная цель - предотвратить множественное включение файлов заголовков, но они также могут использоваться для удовлетворения ваших потребностей.
Включить защитные устройства, связанные с тестированием и условной установкой константы препроцессора в каждом заголовке вашего проекта, который уникален для конкретного файла заголовка. Для этого каждый заголовок обернут в блок #ifndef/#endif
.
Пример:
MyHeader1.h
#ifndef MY_HEADER_1_H
#define MY_HEADER_1_H
// header file contents...
#endif // MY_HEADER_1_H
MyHeader2.h
#ifndef MY_HEADER_2_H
#define MY_HEADER_2_H
// header file contents...
#endif // MY_HEADER_2_H
В вашем случае, теперь вы можете проверить в другом месте в коде для включения любой конкретный заголовочный файл, например #ifdef MY_HEADER_1_H
Проверьте с помощью define и ifdef. –