أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

وصف زخرفة اسم C++

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

126845
الموجز
ترميز compilers C++ Microsoft أسماء الرموز في برامج C++ لتضمين معلومات النوع في الاسم. يسمى هذا "اسم زخرفة" أو "اسم mangling." الغرض من هذا التأكد من ربط نوع - الآمن. لغة C++ يسمح الزائد الدالة حيث دالات بنفس الاسم يتم فقط تمييز عن بعضها البعض بواسطة أنواع بيانات الوسائط لوظائف. تمكين زخرفة اسم linker للتمييز بين الإصدارات المختلفة من الدالات overloaded لأنه يتم ترميز أسماء الدالات أو تزيين بشكل مختلف.
معلومات أخرى
يكون بائعي المترجم مختلفة الأساليب أو خوارزميات لـ decorating الأسماء الخاصة بهم. لم Microsoft نشر خوارزمية للاستخدام الخاص به compilers زخرفة اسم لأنه قد تتغير في المستقبل. ومع ذلك، فمن الضروري في بعض الأحيان الحصول على الإصدار المزين اسم الدالة. على سبيل المثال، قد تحتاج إلى تصدير دالة C++ من DLL Windows خلال سرد في المقطع تصدير ملف .DEF المستخدم لإنشاء DLL. (على الرغم من أن للتصريح الدالة مع __declspec (dllexport) هي الطريقة المفضلة لتصدير دالة C++ باستخدام Visual C++ ، 32-bit Edition فإنه ما تزال صالحة لاستخدام ملف .DEF هذه المنتجات.) لتصدير الدالة بنجاح تحتاج إلى قائمة اسمه المزين وليس اسم في التعليمات البرمجية المصدر.

بالنسبة لكافة المنتجات المذكورة أعلاه يجعل Microsoft Toolkits المستعرض المتوفرة. توفر هذه toolkits تزيين الوظائف التي يمكن تفسير أسماء.

لمزيد من المعلومات حول __declspec(dllexport) انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
132044باستخدام _declspec(dllimport) _declspec(dllexport) في التعليمات البرمجية
يستخدم نموذج التعليمات البرمجية التالي الدالة FormatDName في مكتبة المستعرض جزء من "مجموعة أدوات المستعرض". لتحميل "أدوات المستعرض" قم بزيارة موقع Microsoft التالي على الويب:تقوم الدالة بإرجاع النموذج undecorated اسم تمريرها إليها.

نموذج التعليمات البرمجية

   /* 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 );   }				
يعمل المثال التالي مع 5.0 أدوات المستعرض و 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;   }				

تحذير: تمت ترجمة هذا المقال تلقائياً

خصائص

رقم الموضوع: 126845 - آخر مراجعة: 09/01/2005 16:55:42 - المراجعة: 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 KbMtar
تعليقات