سؤال

حصلت مؤخرًا على DLL تم تنفيذها من قبل الآخرين. لا بد لي من استخدامه في طلبي. في ملف الرأس لفصلهم لديهم إعلان الوظيفة

void func1() throw (CCustomException);

الآن عندما أقوم بتجميعها ، أحصل على التحذير ،

مواصفات استثناء C ++ التي تم تجاهلها باستثناء الإشارة إلى وظيفة ليست _declspec (Nothrow)

قرأت ال MSDN - الوثائق لكن لا يمكن فهمها بوضوح. أيضا ، لا أريد تعطيل التحذير لمجرد أنه يظهر. أريد أن أعرف ما أفعله خطأ بدلاً من تعطيله.

اعتقدت وظيفتي ، قل myfunc() الوصول إلى ذلك func1() من DLL ليس لديه قائمة مواصفات الاستثناء هذه. ومن هنا حاولت الحصول على قائمة مواصفات الاستثناء المقابلة في وظيفتي أيضًا ، كما

void myfunc1() throw (CCustomException);

لكني ما زلت أحصل على التحذير. ما هو هذا التحذير وكيفية التخلص منه؟ أنا أستخدم QT 4.5 في Windows XP.

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

المحلول

حسنًا ، إنها غير إجابة ، لكنني سأفعل تخلص من مواصفات الاستثناء وعدم استخدامها مرة أخرى.

تحرير: قرأت بسرعة كبيرة ، ولم أر أنك لم تكتب الفصل بنفسك. أفضل طريقة للتخلص من التحذيرات في MSVC هي عبر #pragma تحذير (الدفع) تليها #pragma تحذير (تعطيل: xxxx) حيث xxxx هو رمز التحذير:

#ifdef _MSC_VER 
#pragma warning(push)
#pragma warning(disable:xxxx)
#endif 

...

#ifdef _MSC_VER 
#pragma warning(pop)
#endif

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

نصائح أخرى

قد تحاول اللعب مع المعالج المسبق:

#ifdef _SOME_MSVC_DEFINE
#  define _throw(foo)
#else
#  define _throw(foo) throw(foo)
#endif

void myfunc1() _throw (CCustomException);

أو حاول تعطيل هذا التحذير في Visual Studio.

لقد وجدت هذا حلقة الوصل, ، وهو ما وجدته مفيدًا. أضافت للتو إذا كان من المفيد لشخص ما ..

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