是否可以根据C中是否定义头文件来添加代码的某些部分?

时间:2012-05-31 17:23:28

标签: c header-files

我正在编写的代码取决于是否包含头文件。如果包含该文件,我想要某些添加的功能。有没有办法做到这一点,也许是#if?使用C btw

2 个答案:

答案 0 :(得分:4)

只需#define该标题中的符号,稍后再使用#ifdef

header.h
#define HAVE_IPV6

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

答案 1 :(得分:0)

通常与C标头一起使用的技术称为 include guards 。主要目的是防止多重包含头文件,但它们也可用于满足您的需求。

包含防护包括在项目的每个头中测试和有条件地设置预处理器常量,这对于特定的头文件是唯一的。为实现此目的,每个标头都包含在#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