الدخول
من لم يزور ، باستخدام مكتبات مفتوحة المصدر ، فكر: "شكرًا لهؤلاء الرجال على هذه المكتبة الرائعة! في يوم من الأيام ، سأكتب شيئًا ذا قيمة ونضعه في مكان عام حتى يتمكن الآخرون من استخدامه! "
نعم الجميع! أم لا؟ ..
مع ظهور معيار C ++ 17 ، يتم حل
لدينا بشكل أسرع وأكثر أناقة ، ما عليك سوى أن ترغب في تحقيق فكرتك ، وأن تكون قادرًا على تنفيذ الأشياء الجيدة التي يفسدنا بها الرجال من WG21 .
? : #, )) ...
الخلفية
إن موضوع المكونات الإضافية مثير للاهتمام ، لأنه يسمح لك بعمل وظائف جديدة في البرنامج (البرنامج) دون إجراء تغييرات على جوهر البرنامج ، ولكن في نفس الوقت ، يجب التفكير في واجهة التفاعل وكتابتها: Software <-> Plugins Manager <-> Plugins .
لدي خبرة (فاشلة) في إجراء مقابلة مع شركة لديها نظام توصيل خاص بها للأنظمة المضمنة ، بسبب تعقيد البنية التي فشلت في مهمة الاختبار. هناك العديد من وحدات الماكرو داخل الفئات الأساسية التي ورثت منها ، والعديد من الأشياء التي تجعل الحياة اليومية للمبرمج رمادية في وقت استخدام مثل هذه الحلول ...
في إحدى لحظات التعليم الذاتي ، وقراءة المقالات على C ++ 17 ، تقرر دمج المعرفة المكتسبة عند كتابة نظام توصيل يمكن فهمه وسهل استخدامه.
كيف فعلت ذلك سيئة أو جيدة - القاضي يا عزيزي خابروفيتس ...
مراجعة
ميزات المكتبة
- الإضافات كخدمات (تعمل في صفقات منفصلة)
- تفريغ الإضافات غير المستخدمة تلقائيًا
الايجابيات
- سهولة الاستخدام
- تنفيذ مهمة غير متزامنة
- تصميم للرأس فقط
سلبيات
- إذا تم إدخال مكون إضافي جديد في النظام ، فيجب ترجمته مع نفس إصدار المترجم الذي يقوم المدير بتنزيله (بالإضافة إلى libstdc ++) لتوافق ABI
- مخابئ ثابتة من std :: any إلى الأنواع المستخدمة؟
- التحقق من صحة العقود الآجلة؟
إنشاء البرنامج المساعد
class myplugin : public micro::iplugin { public: myplugin(int ver, const std::string& nm):micro::iplugin(ver, nm) {
تنزيل البرنامج المساعد
std::shared_ptr<micro::plugins> manager = micro::plugins::get(); std::shared_ptr<micro::iplugin> myplugin = manager->get_plugin("myplugin"); if (myplugin && myplugin->has<2>("sum2")) { std::shared_future<std::any> result = myplugin->run<2>("sum2", 25, 25); result.wait(); std::cout << std::any_cast<int>(result.get()) << std::endl; }
شاهد المزيد من الأمثلة التفصيلية على صفحة المشروع.
بدلا من الاستنتاج
يسعدني جدا أن أقرأ مقالات إخبارية عن هبرة على C ++ (وليس فقط على C ++) ،
آمل أن تجد هذه المقالة مثيرة للاهتمام ومفيدة إلى حد ما على الأقل.
في رأيي المتواضع ، يمكنك استخدام ليب في همز ، والسماح لهم بإلقاء نظرة على أكثر موثوقية لغة سي ++ وقول كلمتهم ، المصادر موثقة بشكل جيد وليس هناك الكثير منها - حوالي 1000 سطر.
رابط للمشروع
البروتينات الدقيقة