使用未声明的标识符"令牌"



我正在用C语言编写解释器,但复杂性太高了。我开始将代码放入 cpp 类中,但出现错误:

#ifdef _TOKEN_H
#define _TOKEN_H
enum TOKEN_TYPE {INTEGER, IDENTIFIER, KEYWORD, OPERATOR, UNKNOWN};
class Token
{
  public:
    Token(string v = "", TOKEN_TYPE t = UNKNOWN);
  private:
    string value;
    TOKEN_TYPE type;
};
#endif

还有令牌.cpp

#include "Token.h"
using namespace std;
Token::Token(string v, TOKEN_TYPE t)
{
   value = v;
   type = t;
}

使用未声明的标识符"令牌"

有人可以帮助我吗?

您的标头保护不正确。其内容应为:

#ifndef _TOKEN_H
// ^

此外,以下划线和大写字母开头的令牌保留供实现使用。所以它应该是:

#ifndef TOKEN_H

甚至#ifndef TOKEN_H_GUARD

两件事:

  1. #ifdef _TOKEN_H需要#ifndef _TOKEN_H.(还要避免前导下划线后跟大写字母,因为从技术上讲,程序的行为将是未定义的)。

  2. 使用std::string代替标头中的string,因为您在using namespace std;之前包含标头

在标头中写入using namespace std;可能会遇到命名空间污染问题,因此您当前正在做的事情更可取。

最新更新