[英]Include header files optionally in C++
我有一个C ++代码,需要在某些服务器而不是其他服务器中包含某个库。 我使用bjam构建代码。
代码示例:
if server in server_list:
include <header-file.h>
int function();
else:
int function();
并在使用bjam构建期间:
if server in server_list:
-llibrary
else:
...
包含头文件是编译时活动,而不是运行时。 因此,如果条件相同
使用#ifdefs
#define SERVER_IN_LIST
#ifdef SERVER_IN_LIST
#include<...>
#endif
在C和C ++中,任何以#
开头的行都是预处理程序指令 。 预处理器是一个文本解析器,用于在编译源代码文件之前对其进行解析。 它了解特定的指令,例如#include
, #include
#define
和#ifdef
但将普通的C ++代码视为text 。 因此,您不能使用普通的C ++代码来更改预处理器指令的解释。
让我们看一个例子:
if (x == 4){
#include "x4.h"
}
上面的方法是错误的,因为if
语句及其花括号是C ++代码的一部分,因此预处理器将忽略它们。 预处理程序将直接前进并解释#include
指令,这将导致x4.h
的内容粘贴到文件中的该位置。
编写此代码的正确方法是使用条件预处理器指令,例如#if
或#ifdef
。 例如...
#ifdef INCLUDE_X4
# include "x4.h"
#endif
请注意,此代码中的缩进是可选的。
有关预处理器指令的更多信息,请参见此处 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.