假设我在 foo.h 中定义了 BAR。但是 foo.h 可能不存在。我该如何包含它,而不让编译器向我提示?
#include "foo.h"
#ifndef BAR
#define BAR 1
#endif
int main()
{
return BAR;
}
因此,如果在 foo.h 中将 BAR 定义为 2,则如果 foo.h 存在则程序返回 2,如果 foo.h 不存在则返回 1。
最佳答案
一般来说,你需要做一些外部的事情来做到这一点 - 例如通过做一些事情,比如玩弄搜索路径(如评论中所建议的)并提供一个空的 foo.h
作为后备,或者将 #include
包装在 #ifdef HAS_FOO_H
...#endif
并通过编译器开关设置 HAS_FOO_H
(-DHAS_FOO_H
用于 gcc/clang 等.).
如果您知道您正在使用特定的编译器,并且可移植性不是问题,请注意一些编译器确实支持包含一个可能存在或可能不存在的文件作为扩展名。例如,请参阅 clang 的 __has_include
功能。
关于c - 您如何包含可能存在或可能不存在的头文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11569659/