我有一个在linux上使用mysql库(libmysqlclient)的库,我将其移植到Windows,但我似乎遇到了一个"问题"与头文件的位置。在linux下,标题位于/usr/include/mysql
下(至少对于Debian),因此使用标准包含路径时,它们将被包括在内:
#include <mysql/mysql.h>
但是,当在Windows下安装库时,主标题似乎位于c:\Program Files\MySQL\MySQL Connector C 6.1\include\mysql.h
,这需要将其包括在内:
#include <mysql.h>
我也需要为iOS构建它,但此时我还不知道头文件的位置。
解决这个问题的正常方法是什么?我应该在linux下的include路径中添加/usr/include/mysql
吗?不会为标题名称冲突的更高概率开放吗?
答案 0 :(得分:1)
您可以通过检查预定义的符号来确定您正在运行的平台。有几个这样的宏列表浮动;这是一个:
然后,您可以根据平台#include不同的路径:
#if defined(_WIN32) || defined(_WIN64)
# include <mysql.h>
#elif defined(__linux)
# include <mysql/mysql.h>
#elif defined(__APPLE__)
# include <whatever path works on iOS>
#else
# error Unrecognized platform.
#endif
如果您需要在多个地方执行此操作,请将其放入您自己的一个包含文件中,然后#include,然后依次#include正确的mysql.h。
正如您已经建议的那样,另一个选项是在每个平台上设置包含路径,以便#include&lt; mysql.h&gt;作品。你使用哪一个是品味问题。