تسمية طريقة C++ المُدارة
سؤال
أنا أستخدم لغة c++ المُدارة لتنفيذ طريقة تُرجع سلسلة.أعلن عن الطريقة في ملف الرأس الخاص بي باستخدام التوقيع التالي:
String^ GetWindowText()
ومع ذلك، عندما أستخدم هذه الطريقة من C#، يكون التوقيع:
string GetWindowTextW();
كيف أتخلص من حرف "W" الإضافي في نهاية اسم الطريقة؟
المحلول
للتغلب على اختراق المعالج المسبق لملفات رأس Windows، قم بإعلانها على النحو التالي:
#undef GetWindowText
String^ GetWindowText()
لاحظ أنه إذا كنت تستخدم Win32 أو MFC بالفعل GetWindowText()
الإجراءات الروتينية في التعليمات البرمجية الخاصة بك، ستحتاج إما إلى إعادة تعريف الماكرو أو تسميتها باسم GetWindowTextW()
.
نصائح أخرى
GetWindowText عبارة عن استدعاء Win32 API وهو مستعار عبر ماكرو إلى GetWindowTextW في مشروع C++ الخاص بك.
حاول إضافة #undef GetWindowText إلى مشروع C++ الخاص بك.
لا تتم إدارته باستخدام لغة c++ ولكن C++/CLI لمنصة .net.مجموعة من ملحقات Microsoft لـ C++ للاستخدام مع نظام .Net الخاص بهم.
الأسئلة الشائعة لبيارن ستروستروب http://www.research.att.com/~bs/bs_faq.html#CppCLI
C++/CLI ليس C++، لا تضع علامة عليه على هذا النحو.تكساس