سؤال

كلما قمت بتضمين التعزيز في مشروعي، أحصل على مليون من هذه التحذيرات.هل يعرف أحد كيف يمكنني التخلص من التحذيرات؟

../dependsboost/config/abi_prefix.hpp(19):تحذير C4103:"يعتمد boost config abi_prefix.hpp":تم تغيير المحاذاة بعد تضمين رأس ، قد يكون بسبب مفقود #Pragma Pack (POP)

أعلم أنه يمكنني إجراء #pragma لتعطيل التحذير، ولكن أود معرفة سبب هذه التحذيرات.

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

المحلول

والسبب هو أن التعزيز لا يدفع/يفرقع هذه البراغمات في كل ملف يحتاج إلى تعبئة البيانات.وهي تتضمن ملفًا منفصلاً يقوم بالدفع (abi_prefix.hpp)، ثم ملفًا آخر (abo_suffix.hp) بعد ذلك يقوم بالدفع.

وهذا يسمح لهم بإعادة استخدام نفس كود حزمة #pragma في كل مكان، وهو أمر مفيد لأنه قد يختلف بين المترجمين.

إنها آمنة تمامًا بالرغم من ذلك.يتبع دفع #pragma نافذة منبثقة، وقد تم تضمينه للتو من ملف مختلف.لذلك ربما ينبغي عليك فقط تعطيل هذا الخطأ.

نصائح أخرى

نعم، وكنت الحصول على ذلك من توجيه حزمة #pragma في التكوين / أبي / msvc_prefix.hpp. فإنه يشير إلى أن التعبئة الافتراضي المشروع الخاص بك ليست 8. هذا غير عادية جدا، وهذا هو المقصود؟ الخلل بسبب التعبئة الاختلافات يمكن أن تكون صعبة بعض الشيء لتشخيص.

لقد وجدت طريقة للتخلص من هذا التحذير.

تحتاج إلى تحرير الملف boost_1_**\boost\config\user.hpp وإلغاء التعليق على السطر الذي يحتوي على BOOST_DISABLE_ABI_HEADERS

لذلك يجب أن تحدد في هذا الملف:

#define BOOST_DISABLE_ABI_HEADERS

بمجرد الانتهاء من ذلك، فقط قم بالبناء باستخدام bjam كما تفعل عادةً.

يرجى الاطلاع على التعليقات أدناه لمعرفة مخاطر هذا الحل

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