语法错误:预期的“name1”而不是“name2”
语法错误:意外令牌“token1”,预期为“token2”
语法错误:此处出现意外的“token1”,预期为“token2”
注解
有多种方法会导致此错误。 通常是由编译器无法理解的令牌序列引起的。
示例
在此示例中,强制转换运算符与无效运算符一起使用。
// C2760.cpp
class B {};
class D : public B {};
void f(B* pb) {
D* pd1 = static_cast<D*>(pb);
D* pd2 = static_cast<D*>=(pb); // C2760
D* pd3 = static_cast<D*=(pb); // C2760
}
新 lambda 处理器在 /std:c++20
或更高版本中提供,或在 /Zc:lambda
下提供,可在泛型 lambda 中启用一些新的一致性模式语法检查。 旧版 lambda 处理器编译此代码时不会出现警告,但新的 lambda 处理器会生成错误 C2760:
void f() {
auto a = [](auto arg) {
decltype(arg)::Type t; // C2760 syntax error: unexpected token 'identifier', expected ';'
};
}
此示例显示正确的语法,现在由编译器强制执行,此编译器在所有 /std
模式下均可工作:
void f() {
auto a = [](auto arg) {
typename decltype(arg)::Type t;
};
}