سؤال

قبيح مثل win32 Microsoft المحول البرمجي باستخدام __declspec ماكرو, لديها ميزة كونها واضحة حول ما تريد تصدير أو لا.

تتحرك نفس القانون على لينكس gnu/دول مجلس التعاون الخليجي النظام يعني الآن جميع الطبقات يتم تصديرها!(?)

هل هذا صحيح حقا ؟

هل هناك طريقة تصدير فئة داخل المكتبة المشتركة في إطار دول مجلس التعاون الخليجي ؟

#ifndef WIN32
#define __IMPEXP__
#else
#undef __IMPEXP__
#ifdef __BUILDING_PULSETRACKER__
#define __IMPEXP__ __declspec(dllexport)
#else
#define __IMPEXP__ __declspec(dllimport)
#endif // __BUILDING_PULSETRACKER__
#endif // _WIN32

class __IMPEXP__ MyClass
{
    ...
}
هل كانت مفيدة؟

المحلول

هذا ممكن في دول مجلس التعاون الخليجي 4.0 وما بعدها.دول مجلس التعاون الخليجي تنظر الناس هذا الرؤية.هناك المادة على دول مجلس التعاون الخليجي ويكي حول هذا الموضوع.هنا مقتطف من المقال:

#if defined _WIN32 || defined __CYGWIN__
  #ifdef BUILDING_DLL
    #ifdef __GNUC__
      #define DLL_PUBLIC __attribute__((dllexport))
    #else
      #define DLL_PUBLIC __declspec(dllexport) // Note: actually gcc seems to also supports this syntax.
    #endif
  #else
    #ifdef __GNUC__
      #define DLL_PUBLIC __attribute__((dllimport))
    #else
      #define DLL_PUBLIC __declspec(dllimport) // Note: actually gcc seems to also supports this syntax.
    #endif
    #define DLL_LOCAL
#else
  #if __GNUC__ >= 4
    #define DLL_PUBLIC __attribute__ ((visibility("default")))
    #define DLL_LOCAL  __attribute__ ((visibility("hidden")))
  #else
    #define DLL_PUBLIC
    #define DLL_LOCAL
  #endif
#endif

extern "C" DLL_PUBLIC void function(int a);
class DLL_PUBLIC SomeClass
{
   int c;
   DLL_LOCAL void privateMethod();  // Only for use within this DSO
 public:
   Person(int _c) : c(_c) { }
   static void foo(int a);
};

نصائح أخرى

إذا كانت الدرجة لا ينبغي أن تكون متاحة ، فإنه لا ينبغي أن يكون في رأس.ما هو الهدف من تبادل الإعلانات من الأشياء التي لا يمكن للمستخدم استخدام ؟

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