Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
'identifier': la lunghezza del nome decorata è stata superata, il nome è stato troncato
Osservazioni:
Questo avviso del compilatore è obsoleto e non viene generato nei compilatori di Visual Studio 2017 e versioni successive.
Il nome decorato era più lungo del limite del compilatore (4096) ed è stato troncato. Per evitare questo avviso e il troncamento, ridurre il numero di argomenti o la lunghezza dei nomi degli identificatori usati. I nomi decorati più lunghi del limite del compilatore hanno un hash applicato e non sono in pericolo di un conflitto di nomi.
Quando si usa una versione precedente di Visual Studio, questo avviso può essere generato quando il codice contiene modelli specializzati in modelli ripetutamente. Ad esempio, una mappa delle mappe (dalla libreria standard C++). In questo caso, è possibile impostare il typedef come tipo ( structad esempio , che contiene la mappa).
È tuttavia possibile decidere di non ristrutturare il codice. È possibile spedire un'applicazione che genera L4503, ma se si ricevono errori di tempo di collegamento su un simbolo troncato, può essere più difficile determinare il tipo di simbolo nell'errore. Il debug può anche essere più difficile; il debugger potrebbe avere difficoltà a eseguire il mapping del nome del simbolo al nome del tipo. La correttezza del programma, tuttavia, non è influenzata dal nome troncato.
Esempio
L'esempio seguente genera l'errore C4503 nei compilatori prima di 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;
Questo esempio mostra un modo per riscrivere il codice per risolvere 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;