Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
"identyfikator" : przekroczono długość nazwy ozdobnej, nazwa została obcięta
Uwagi
To ostrzeżenie kompilatora jest przestarzałe i nie jest generowane w programie Visual Studio 2017 i nowszych kompilatorach.
Nazwa ozdobiona była dłuższa niż limit kompilatora (4096) i została obcięta. Aby uniknąć tego ostrzeżenia i obcinania, zmniejsz liczbę argumentów lub długości nazw używanych identyfikatorów. Nazwy ozdobione dłuższe niż limit kompilatora mają zastosowany skrót i nie są zagrożone kolizją nazw.
W przypadku korzystania ze starszej wersji programu Visual Studio to ostrzeżenie można wydać, gdy kod zawiera szablony wyspecjalizowane w szablonach wielokrotnie. Na przykład mapa map (z standardowej biblioteki języka C++). W takiej sytuacji można ustawić typedefs jako typ ( structna przykład ), który zawiera mapę.
Możesz jednak zdecydować się na nieustrukturyzować kodu. Istnieje możliwość wysłania aplikacji, która generuje C4503, ale jeśli otrzymasz błędy czasu połączenia dla obcinanego symbolu, może być trudniejsze do określenia typu symbolu w błędzie. Debugowanie może być również trudniejsze; debuger może mieć trudności z mapowaniem nazwy symbolu na nazwę typu. Jednak poprawność programu nie ma wpływu na nazwę obciętą.
Przykład
Poniższy przykład generuje błąd C4503 w kompilatorach wydanych przed Visual Studio 2017.
// C4503.cpp
// compile with: /W1 /EHsc /c
// C4503 expected
#include <string>
#include <map>
class Field{};
typedef std::map<std::string, Field> Screen;
typedef std::map<std::string, Screen> WebApp;
typedef std::map<std::string, WebApp> WebAppTest;
typedef std::map<std::string, WebAppTest> Hello;
Hello MyWAT;
W tym przykładzie pokazano jeden ze sposobów ponownego zapisania kodu w celu rozpoznania kodu C4503:
// C4503b.cpp
// compile with: /W1 /EHsc /c
#include <string>
#include <map>
class Field{};
struct Screen2 {
std::map<std::string, Field> Element;
};
struct WebApp2 {
std::map<std::string, Screen2> Element;
};
struct WebAppTest2 {
std::map<std::string, WebApp2> Element;
};
struct Hello2 {
std::map<std::string, WebAppTest2> Element;
};
Hello2 MyWAT2;