我目前正在为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;
我确信这对我来说通常是愚蠢的。但请帮帮我!谢谢!
答案 0 :(得分:3)
我假设您以某种方式包含头文件两次。你有防范吗?每个头文件都应该包含:
#ifndef TOKEN_H
#define TOKEN_H
[your header file code]
#endif
如果不是这样,请确保您没有在其他地方定义令牌两次。
答案 1 :(得分:1)
您可能错过了include guards并进入包含文件递归。
答案 2 :(得分:1)
将此行添加到每个头文件中:
#pragma once