C++ #包括<;mysql.h>&#包括<;my_global.h>;导致编译错误
因此,我正在使用SMAUG MUD代码库的一个旧版本,我目前正在实现MySQL数据库支持,我遇到了一个难题:一旦我在代码库中包含MySQL C API头文件,我就会出现以下错误:C++ #包括<;mysql.h>&#包括<;my_global.h>;导致编译错误,c++,mysql,c,macros,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-lo
[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
[darkston@harbingersrc]$make
make[1]:进入目录“/home/mud/darkston/devel/mud/src”
正在编译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:在成员函数“void std::_deque_base::_M_initialize_map(size_t)”中:
/usr/lib/gcc/i386 redhat linux/4.1.2/../../../../../../../../../include/c++/4.1.2/bits/stl_deque.h:469:错误:在“(”标记之前应为非限定id
/usr/lib/gcc/i386 redhat linux/4.1.2/../../../../../../../../../include/c++/4.1.2/bits/deque.tcc:在成员函数“void std::deque::_M_realocate_map(size_t,bool)”中:
/usr/lib/gcc/i386 redhat linux/4.1.2/../../../../../../../../../include/c++/4.1.2/bits/deque.tcc:747:错误:在“(”标记之前应为非限定id
生成[1]:***[.o/accounts.o]错误1
make[1]:离开目录“/home/mud/darkston/devel/mud/src”
make:**[全部]错误2
除此之外,我没有向程序中添加任何其他代码
#include <my_global.h>
#include <mysql.h>
#包括
#包括
我在谷歌上搜索了一下,很多人都说“min”和“max”宏有问题,但源代码中没有“min”或“max”宏。更确切地说,我已经阻止了所有可用的实用程序宏--
#ifndef UMIN
#定义UMIN(a,b)((a)<(b)?(a):(b))
#恩迪夫
#ifndef UMAX
#定义UMAX(a,b)((a)>(b)?(a):(b))
#恩迪夫
等
还是给我同样的错误
我使用的是GCC版本4.1.2
有什么想法吗
::编辑::
好的,我让它工作了——不幸的是,你们给出的答案没有一个能让它工作,所以我不得不把它与程序的其余部分隔离开来,创建一个接口连接这两个部分。我搬家了
#include <mysql.h>
#include <my_global.h>
#包括
#包括
并创建函数来访问我需要的内容,从而将其与其他所有内容隔离开来
到目前为止,这可能不是最好的答案,但这是一个答案
谢谢大家的帮助!移动您的#包括
#包括
#包括
在文件中所有其他#include的下方。我会查看它抱怨的那些行,注意标识符,然后我会查看您刚才包含的头文件,看看这些标识符是否定义在头文件中。另一种方法是将您的#include移到其他#include的下方。
#include <mysql.h>
#include <my_global.h>
#include <my_global.h>
#include <mysql.h>