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