C ++ - 太多包含文件? &安培;结构重新定义?

时间:2010-11-05 01:54:51

标签: c++ tokenize

我目前正在为XML编写令牌识别器。我正在沿着FSA的基础去做这件事。所以我有一个包含以下代码的Header文件......

#define MAX_LENGTH    512
#define  MAX_NAME  25

struct token 
{
  char name[MAX_NAME + 1];
  int type;
  unsigned char str[MAX_LENGTH + 1];
 };

 #define TOKEN_TYPES 8

 #define SPACES  0
 #define NEWLINE  1
 #define WORD  2
 #define BEGINTAG  3
 #define ENDTAG  4
 #define EMPTYTAG 5
 #define ERROR 6
 #define ENDFILE 7

有了这个,我收到了错误:

error C2011: 'token' : 'struct' type redefinition

我的gettoken.cpp文件中也出现了另一个奇怪的错误。我实际实施FSA的地方。文件很长,以显示整个内容。但有了这个,我得到了错误......

error C1014: too many include files : depth = 1024

这是该.cpp文件的代码的一部分。我只会在此包含我的导入。

#include  <iostream>
#include  <fstream>
#include  <stdlib.h>
#include  <string>
#include  "Token.h"

using namespace std;

我确信这对我来说通常是愚蠢的。但请帮帮我!谢谢!

3 个答案:

答案 0 :(得分:3)

我假设您以某种方式包含头文件两次。你有防范吗?每个头文件都应该包含:

#ifndef TOKEN_H
#define TOKEN_H

[your header file code]

#endif

如果不是这样,请确保您没有在其他地方定义令牌两次。

答案 1 :(得分:1)

您可能错过了include guards并进入包含文件递归。

答案 2 :(得分:1)

将此行添加到每个头文件中:

#pragma once