所以我正在处理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并创建函数来访问我需要的东西,从而将它与其他所有东西隔离开来。
到目前为止它的确有效,它可能不是最佳答案,但却是答案。
谢谢大家的帮助!
答案 0 :(得分:0)
移动#includes
#include <my_global.h>
#include <mysql.h>
低于文件中所有其他#includes。