【问题标题】:How to portably including mysql headers如何可移植地包含 mysql 标头
【发布时间】:2015-09-28 11:11:08
【问题描述】:

我有一个在 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下的包含路径中添加/usr/include/mysql吗?这不会增加标题名称冲突的可能性吗?

【问题讨论】:

    标签: ios mysql linux windows portability


    【解决方案1】:

    您可以通过检查预定义的符号来确定您在哪个平台上运行。有一些这样的宏列表浮动;这是一个:

    http://nadeausoftware.com/articles/2012/01/c_c_tip_how_use_compiler_predefined_macros_detect_operating_system

    然后,您可以根据平台#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 起作用。使用哪一种是个人喜好问题。

    【讨论】:

      猜你喜欢
      • 2010-12-16
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-09
      • 2015-10-08
      • 1970-01-01
      相关资源
      最近更新 更多