C++ ad düzenleme açıklaması

Makale çevirileri Makale çevirileri
Makale numarası: 126845 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Microsoft C++ derleyiciler simge adı tür bilgileri eklemek için C++ programlarda adlarını kodlar. Bu "ad düzenleme" veya "ad bozma" olarak adlandırılır Bu amacı, bu tür güvenli bağlama sağlamaktır. C++ dil burada aynı adı taşıyan işlevi yalnızca birbirinden bağımsız değişkenlerin veri türlerini tarafından işlevleri için ayrılırlar işlevi aşırı yükleme sağlar. Ad düzenleme linker, işlevlerin adları olarak kodlanmış veya farklı donatılmış olduğundan yüklenmiş işlevleri farklı sürümleri arasında ayrım yapmak etkinleştirir.

Daha fazla bilgi

Farklı bir derleyici satıcıların kendi yöntemler veya algoritmalar, adları decorating için vardır. Microsoft, gelecekte değişebilir olduğundan, ad düzenleme için kendi derleyiciler kullanın algoritması yayımlamaz. Ancak, bazen bir işlev adı Süslenen sürümünü almak gereklidir. Örneğin, dll DOSYASıNı oluşturmak için kullanılan bir .def dosyası EXPORTS bölümünde listeleyerek, Windows bir DLL dosyasından bir C++ işlevi verme gerekebilir. (__Declspec (dllexport) işleviyle Visual C++, 32-bit Edition'ı kullanarak bir C++ işlevi vermek için tercih edilen yöntemdir bildirmek olsa da, bir .def dosyası bu ürünlerle kullanmak üzere yine de geçerlidir.) Işlev başarıyla vermek için <a0></a0>, Süslenen adını, adını değil, kaynak kodu listesi gerekir.

Tüm yukarıda listelenen ürünler için Microsoft tarayıcı araç takımları kullanılabilir hale getirir. Bu araç takımları, adları yorumlayabileceği işlevleri bilgisi sağlar.

__Declspec(dllexport) hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
132044_Declspec(DllImport) ve _declspec(dllexport) kod içinde kullanma
Aşağıdaki örnek kod, tarayıcı kitaplığı, tarayıcı araç seti bir parçası FormatDName fonksiyonunu kullanır. Tarayıcı araç takımı'nı karşıdan yüklemek için aşağıdaki Microsoft Web sitesini ziyaret edin:
http://www.microsoft.com/downloads/details.aspx?FamilyID=621ae185-1c2a-4d6b-8146-183d66fe709d&displaylang=en
Işlev undecorated formun kendisine geçirilen adını döndürür.

Örnek kod

   /* 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 );
   }
				
Aşağıdaki örnek yeni tarayıcı araç paketi 5. 0'ı ve Visual C++ sürüm ile 5.0 çalışır.
   /* 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;
   }
				

Özellikler

Makale numarası: 126845 - Last Review: 1 Eylül 2005 Perşembe - Gözden geçirme: 4.0
Bu makaledeki bilginin uygulandığı durum:
  • 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 Aboneliği
  • 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
Anahtar Kelimeler: 
kbmt kbcode kbcompiler kbcpponly kbinfo KB126845 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:126845

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com