Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
szintaxishiba: hiányzik a "token" az 'identifier' azonosító előtt
Megjegyzések
A fordító token várt, de ehelyett identifier talált. Lehetséges okok:
Helyesírási vagy nagybetűs hiba.
Hiányzik a típusjelölő az azonosító deklarációjában.
Ezt a hibát tipográfiai hiba okozhatja. A C2065 hiba általában megelőzi ezt a hibát.
Példák
Az alábbi példa C2146-ot hoz létre.
// C2146.cpp
class CDeclaredClass {};
class CMyClass {
CUndeclared m_myClass; // C2146
CDeclaredClass m_myClass2; // OK
};
int main() {
int x;
int t x; // C2146 : missing semicolon before 'x'
}
Ez a hiba a Visual Studio .NET 2003: hiányzó typename kulcsszóhoz végzett fordítómegformelési munka eredményeként is létrejön.
Az alábbi példa a Visual Studio .NET 2002-ben áll össze, de a Visual Studio .NET 2003-ban sikertelen lesz:
// C2146b.cpp
// compile with: /c
template <typename T>
struct X {
struct Y {
int i;
};
Y memFunc();
};
template <typename T>
X<T>::Y func() { } // C2146
// OK
template <typename T>
typename X<T>::Y func() { }
Ez a hiba a Visual Studio .NET 2003-hoz készült fordítómegformálási munka eredményeként is megjelenik: az explicit specializációk már nem találnak sablonparamétereket az elsődleges sablonból.
T Az elsődleges sablon használata nem engedélyezett az explicit specializációban. Ahhoz, hogy a kód érvényes legyen a Visual Studio .NET 2003-ban és a Visual Studio .NET-ben, cserélje le a sablonparaméter minden példányát a specializációban kifejezetten specializált típusra.
Az alábbi példa a Visual Studio .NET-ben fordításra kerül, de a Visual Studio .NET 2003-ban sikertelen lesz:
// C2146_c.cpp
// compile with: /c
template <class T>
struct S;
template <>
struct S<int> {
T m_t; // C2146
int m_t2; // OK
};