【问题标题】:#include <mysql.h> & #include <my_global.h> causes compilation error#include <mysql.h> & #include <my_global.h> 导致编译错误
【发布时间】:2013-11-17 04:17:09
【问题描述】:

所以我正在使用 SMAUG MUD 代码库的旧副本,我目前正在实现 MySQL 数据库支持,但我遇到了困难:只要我在代码库中包含 MySQL C API 头文件,我就会得到以下错误:

[darkston@harbinger src]$ make
make[1]: Entering directory `/home/mud/darkston/devel/mud/src'
Compiling accounts.cpp...
g++ -MD -c -Wall --pedantic -Wno-long-long -DSHARED_STR_NO_STRICMP -g3 -I/home/mud/darkston/include -I/home/mud/darkston/include -I/home/mud/darkston/include -I/usr/include/mysql -o .o/accounts.o accounts.cpp
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_deque.h: In member function ‘void std::_Deque_base<_Tp, _Alloc>::_M_initialize_map(size_t)’:
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_deque.h:469: error: expected unqualified-id before ‘(’ token
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/deque.tcc: In member function ‘void std::deque<_Tp, _Alloc>::_M_reallocate_map(size_t, bool)’:
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/deque.tcc:747: error: expected unqualified-id before ‘(’ token
make[1]: *** [.o/accounts.o] Error 1
make[1]: Leaving directory `/home/mud/darkston/devel/mud/src'
make: *** [all] Error 2

我没有在程序中添加任何其他代码,除了

#include <my_global.h>
#include <mysql.h>

我搜索了一下,很多人都说“min”和“max”宏存在问题,但源代码中没有“min”或“max”宏。再次肯定的是,我 #ifndef 阻止了所有可用的实用程序宏--

#ifndef UMIN
#define UMIN(a, b)      ((a) < (b) ? (a) : (b))
#endif

#ifndef UMAX
#define UMAX(a, b)      ((a) > (b) ? (a) : (b))
#endif
... etc

仍然给我同样的错误。

我使用的是 GCC 版本 4.1.2

有什么想法吗?

::编辑:: 好的,我让它工作了——不幸的是,你们给出的答案都没有让它工作,所以我不得不将它与程序的其余部分隔离,并创建一个接口到连接两者的接口。我搬家了

#include <mysql.h>
#include <my_global.h>

到我自己的文件 mysqlAPI.cpp 并创建函数来访问我需要的内容,从而将其与其他所有内容隔离开来。

到目前为止它有效,它可能不是最好的答案,但它是一个答案。

感谢大家的帮助!

【问题讨论】:

  • 我会查看它抱怨的那些行,注意标识符,然后我会查看您刚刚包含的头文件,看看这些标识符是否已定义为头文件中的某些内容。
  • 另一种方法是将您的#includes 移动到其他#includes 下方。

标签: c++ mysql c macros


【解决方案1】:

移动你的#includes

#include <my_global.h>
#include <mysql.h>

在文件中所有其他 #include 的下方。

【讨论】:

    猜你喜欢
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多