#include <mysql.h>&amp; #include <my_global.h>导致编译错误</my_global.h> </mysql.h>

时间:2013-11-17 04:17:10

标签: c++ mysql c macros

所以我正在处理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 ver 4.1.2

有什么想法吗?

:: EDIT :: 好吧,我让它工作了 - 不幸的是,你们给出的答案都没有让它起作用,所以我不得不将它与程序的其余部分隔离开来,并创建一个连接两者的接口的接口。我搬了

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

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

到目前为止它的确有效,它可能不是最佳答案,但却是答案。

谢谢大家的帮助!

1 个答案:

答案 0 :(得分:0)

移动#includes

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

低于文件中所有其他#includes。