سؤال

وكيفية استدعاء رمزا-المهترئ اسم من C؟

module.name:version

void* function(TypeSig); // Type of the function

وكنت تريد أن تكون قادرة على استخدام codepaths مكتوبة بلغتي في C. وظيفة اصطلاح استدعاء هو نفسه تقريبا. انها مجرد أنني يجب أن فسد في الإصدار ومسار الوحدة داخل حرف I تصدير، ولدي اتفاقية المعرف نفس لديها C، لذلك لا أستطيع أن مجرد استخدام تسطير.

هل كانت مفيدة؟

المحلول

وIIUC، تقوم بتعريف اللغة الخاصة بك، ويبحثون عن اسم مناسبة تغيير اسم الخوارزمية.

وقد ترغب في استخدام إنتل et.al. اسم إيتانيوم تغيير اسم الخوارزمية ، والذي يستخدم بواسطة g ++ على كل المنصات. وبالنسبة لحالة معينة، قد فسد كل الأسماء الخاصة بك كما لو كان إعلان C ++

namespace module{ namespace name { namespace Vversion /*e.g. V1_0 */ {
  void *function(int){}
}}}

والتي من شأنها أن فسد ك

_ZN6module4name4V1_08functionEi

وواستخدام كل ما تبذلونه من الرموز التي الخوارزمية، فإنها لا يمكن أن تتعارض مع بعضها البعض. كما أنها لا يمكن أن تتعارض مع وظيفة C قياسية تسمى _ZN6module4name4V1_08functionEi، كما يتم حجز جميع الأسماء بدءا _z (أو _UPPERCASE) لتنفيذ (من C). إذا كنت تريد callability مريحة من ز ++، يمكنك استخدام هذه الاتفاقية بالضبط. آخر يمكنك اختيار بريد إلكتروني مختلف عن Z.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top