2010-11-11 122 views
5

您能解释标题错误通常意味着什么吗?错误:期望X令牌之前的主表达式

我有时会得到它,我总是最终设法修复它,但我仍然不知道它的含义。

下面是从我目前的错误示例:

Lca<RankVec, VertexVec> lca(graphList[0], dset, ss&); 

error: expected primary-expression before ')' token

+0

举个例子呢? – TonyK 2010-11-11 11:30:16

+0

这应该是一个函数声明或函数调用? – MSalters 2010-11-11 11:37:25

+0

@MSalters函数调用 – 2010-11-11 11:38:30

回答

2

&符号用作按位AND运算符。即0x3 & 0x5 == 0x1。在这种形式下,它是两个表达式之间的中缀运算符。从你告诉我们,我们现在知道ss是一个表达式。因此,编译器认为ss &是按位AND表达式的开始,它期望右侧(它称为“primary-expression”)。但是,编译器遇到)而不是右手边。这显然不是AND表达式的右边。

3

很难说没有任何样品,但IIRC这种情况如使用未定义符号的后果(如无功能或类型声明 - 不知道确切的)。因此,解析器会感到困惑,并且不知道代码中会进一步期待什么。

- (我相信这个错误只出现在与其他错误相结合或者你可以提供一个代码段,这将使对GCC编译器只这个错误?) -

编辑:在你的代码提供,它只是在非法的地方遇到“&”符号后解析器迷路了 - 这是语法无效的结果,而不是无效的语义。

这种神秘的错误信息(或者通常更糟糕)是C++的语法不可判定的事实,编译器在看到错误时无法真正猜出应该在那里的内容,从而无法生成更准确的描述。

0

现在很难建议OP的信息,但让我试试看。

假设,其他人都已到位,OP中的表达式是一个函数调用,请尝试更改您传递最后一个参数的方式。如果您想将其作为指针传递,则必须在名称前面使用&,而不要在后面使用。

Lca<RankVec, VertexVec> lca(graphList[0], dset, &ss); 
2

从标准文档,5.1基本表达式

Primary expressions are literals, names, and names qualified by the scope resolution operator ::.

而且还从2.6令牌

There are five kinds of tokens: identifiers, keywords, literals,16) operators, and other separators

现在,我认为错误是相当描述。 。

何pe帮助..

相关问题