Al momento sei offline in attesa che la connessione Internet venga ristabilita

Descrizione della decorazione dei nomi c ++

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 126845
Sommario
I compilatori Microsoft c ++ codificano i nomi dei simboli nei programmi c ++ consente di includere informazioni sul tipo nel nome. Si tratta di "decorazione dei nomi" o il nome alterazione." Lo scopo di questo è per garantire l'indipendenza dai tipi di collegamento. Il linguaggio c ++ consente di overload di funzioni in cui le funzioni con lo stesso nome vengono solo distinti uno da altro da tipi di dati degli argomenti alle funzioni. Decorazione dei nomi consente al linker di distinguere tra versioni diverse di funzioni in overload, perché i nomi delle funzioni sono codificati o decorati in modo diverso.
Informazioni
Fornitori del compilatore diverse disporre di propri metodi o di algoritmi per la decorazione dei nomi. Microsoft non pubblica l'algoritmo che relativo i di compilatori utilizzano per la decorazione dato che potrebbe cambiare in futuro. Tuttavia, talvolta è necessario ottenere la versione di un nome di funzione decorata. Ad esempio, sarà necessario esportare una funzione c ++ da una DLL di Windows per l'elenco sezione EXPORTS del file DEF utilizzato per generare la DLL. (Sebbene dichiarare che la funzione con __declspec (dllexport) è il metodo preferito per esportare una funzione di c ++ utilizzando Visual c ++, versione a 32 bit, è comunque possibile utilizzare un file def con questi prodotti.) Per esportare la funzione correttamente, è necessario elencare il nome decorato, non il nome nel codice sorgente.

Per tutti i prodotti elencati in precedenza, Microsoft rende disponibili gli strumenti del browser. Questi strumenti forniscono decorati di funzioni in grado di interpretare i nomi.

Per ulteriori informazioni su __declspec (dllexport), fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
132044Utilizzare _declspec (dllimport) e _declspec(dllexport) nel codice
Nell'esempio di codice riportato di seguito, la funzione di FormatDName viene utilizzata nella libreria di browser, parte del Toolkit di browser. Per scaricare il Toolkit di browser, il seguente sito Microsoft Web:La funzione restituisce la forma non decorata del nome passato.

Codice di esempio

   /* Compile options needed: cl /AL getname.cpp bthunkl.obj /link bsc.lib          (for 16-bit, where getname.cpp is the source file name)                              cl getname.cpp /link bsc.lib          (for 32-bit version 4.x and earlier, where getname.cpp is the source           file name)   */    #include <iostream.h>   #include <strstrea.h>   extern "C"   {   #include "hungary.h"   #include "bsc.h"   #include "bscsup.h"   }   void main( int argc, char *argv[] )   {       if ( argc < 2 )       {           cout << "Usage: GETNAME decorated-name" << endl;           return;       }       strstream name;       // Call browser library function to get undecorated name       name << FormatDname ( argv[1] ) << '\0';       cout << "Undecorated name: " << name.str() << endl;       name.rdbuf()->freeze( 0 );   }				
L'esempio riportato di seguito funziona con la versione più recente di Browser Toolkit 5.0 e Visual c ++ 5.0.
   /* Compile options needed: cl /GX getname.cpp /link msbsc50.lib          (where getname.cpp is the source file name)   */    #include <iostream>   #include <strstream>   #include <windows.h>   #include "bsc.h"   using namespace std;   int main( int argc, char *argv[] )   {       Bsc* pbsc;       if ( argc < 3 )       {           cout << "Usage: GETNAME bscfile-name decorated-name" << endl;           return 1;       }       strstream name;       // Open the browser file       Bsc::open( argv[1], &pbsc );       // Call browser library function to get undecorated name       name << pbsc->formatDname( argv[2] ) << '\0';       cout << "Undecorated name: " << name.str() << endl;       name.rdbuf()->freeze( 0 );       pbsc->close();       return 0;   }				

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 126845 - Ultima revisione: 09/01/2005 16:55:42 - Revisione: 4.0

Microsoft Visual C++ 1.5 Professional Edition, Microsoft Visual C++ 1.51, Microsoft Visual C++ 1.52 Professional Edition, Microsoft Visual C++ 2.0 Professional Edition, Microsoft Visual C++ 2.1, Microsoft Visual C++ 4.0 Standard Edition, Microsoft Visual C++ 4.1 Subscription, Microsoft Visual C++ 5.0 Enterprise Edition, Microsoft Visual C++ 6.0 Enterprise Edition, Microsoft Visual C++ 5.0 Professional Edition, Microsoft Visual C++ 6.0 Professional Edition, Microsoft Visual C++, 32-bit Learning Edition 6.0

  • kbmt kbcode kbcompiler kbcpponly kbinfo KB126845 KbMtit
Feedback