Sjo*_*888 5 c++ linux c-preprocessor
在我的代码中,我使用了一个头文件,不幸的是,它在不同的Linux发行版下具有不同的位置.
在我的例子中,它是来自cfitsio的fitsio.h,它位于OpenSUSE 12.1中:
#include <cfitsio/fitsio.h>
Run Code Online (Sandbox Code Playgroud)
在Arch Linux中:
#include <fitsio.h>
Run Code Online (Sandbox Code Playgroud)
我想我可以使用一些预处理器指令来创建一个开关.我可以用它来测试我是在Linux还是Windows等,但我不知道我可以用来测试我是否在Arch Linux上.
还是有另一种方法/策略来处理这种情况?
保持简单包括
#include <fitsio.h>
Run Code Online (Sandbox Code Playgroud)
然后,在其他包含目录下,列出包含此标头的目录的路径,包括SUSE和Arch:
/path/to/header/cfitsio
/path/to/header
Run Code Online (Sandbox Code Playgroud)
即使前者在Arch上不存在,也不会在编译期间导致任何问题.