2012-05-31 1 views
1

Я пишу код, который зависит от того, включен ли заголовочный файл. Если файл включен, я хочу некоторые дополнительные функции. Есть ли способ сделать это, возможно, с #if? Использование C btwМожно ли добавить определенные части кода в зависимости от того, определен ли файл заголовка или нет в C?

+0

Проверьте с помощью define и ifdef. –

ответ

4

Только #define символ в этом заголовке и используйте #ifdef позже.

header.h 
#define HAVE_IPV6 

some_file.c 
#ifdef HAVE_IPV6 
/* code */ 
#endif 
+0

Существует также проблема использования #include. Моя программа не знает, существует ли заголовок или нет, поэтому мне нужно обернуть #include в какую-то проверку, иначе я получу ошибку, если она не определена. – user1429039

0

методика обычно используется с заголовками 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