我正在尝试使用此方法获取在另一个文件中声明的枚举成员:
inline void register(TokenType tokenType, InfixParselet* parselet)
{
m_infixMap.insert(tokenType, parselet);
}
在另一个文件中声明TokenType
:
enum TokenType
{
// --- Symbols ---
TOKEN_LEFT_PAREN,
TOKEN_RIGHT_PAREN,
TOKEN_LEFT_SQUARE_BRACE,
// Loads more symbols left out for conciseness
TOKEN_NEW_LINE,
TOKEN_ERROR,
TOKEN_EOF
};
我已经检查过该文件是否正确包含在文件中,但我仍然收到错误:error: expected ‘)’ before ‘tokenType’
inline void register(TokenType tokenType, InfixParselet* parselet)
^
我认为,这个错误在类型没有被正确宣布时很常见,但我无法找到声明的问题。有什么想法吗?
答案 0 :(得分:2)
register
是一个关键字,表示自动存储持续时间,并提示编译器将变量存储在寄存器中。您不应该在代码中将其用作函数名称。将其更改为register_token
或其他内容,它应该有效。
答案 1 :(得分:1)
由于register
是关键字,因此您对编译器感到困惑。 (它是编译器的优化顾问,用于在CPU寄存器中维护变量。)