Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ #包括<;mysql.h>&#包括<;my_global.h>;导致编译错误_C++_Mysql_C_Macros - Fatal编程技术网

C++ #包括<;mysql.h>&#包括<;my_global.h>;导致编译错误

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

因此,我正在使用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
[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>