您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> C/C++ >> 定义enum 在多个文件类中使用,编译报错

定义enum 在多个文件类中使用,编译报错

来源:网络整理     时间:2016/8/28 16:38:33     关键词:

关于网友提出的“ 定义enum 在多个文件类中使用,编译报错”问题疑问,本网通过在网上对“ 定义enum 在多个文件类中使用,编译报错”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 定义enum 在多个文件类中使用,编译报错
描述:

如题:
我在main.h中定义了


#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
using std::string;
#include "file1.h"
#include "file2.h"
typedef enum _SOURCESTREAM_STATE
{
SOURCESTREAM_INVALID = -1,
SOURCESTREAM_INIT = 0,
SOURCESTREAM_START = 1,
SOURCESTREAM_STOP = 2,
}SOURCESTREAM_STATE;

在file1.h中声明函数如下:

#include "main.h"
void file1_funtion(SOURCESTREAM_STATE state);

在file1.cpp中定义函数如下:

#include "file1.h"
void file1_funtion(SOURCESTREAM_STATE state)
{
if (state == SOURCESTREAM_START)
{
printf("[%s][%d][%s]\n", __FILE__, __LINE__, __func__);
}
}

file2.h file2.cpp与file1.h file2.cpp差不多,只是函数名不一样, 编译报错如下:
realtimedsp@realtimedsp-desktop:~/test/2014_test/enum$ make
g++ -c -g -DDEBUG -lpthread file1.cpp
In file included from main.h:16:0,
                 from file1.h:5,
                 from file1.cpp:3:
file2.h:7:20: error: variable or field ‘file2_funtion’ declared void
file2.h:7:20: error: ‘SOURCESTREAM_STATE’ was not declared in this scope
make: *** [file1.o] Error 1
请多多指教!!

解决方案1:

能不能把main.h里面这两行删掉
#include "file1.h"
#include "file2.h"

解决方案2:

main.h和file1.h互相include?这可不太好吧


以上介绍了“ 定义enum 在多个文件类中使用,编译报错”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3637162.html

相关图片

相关文章