C-toxcore: لا تقم بتضمين رؤوس خاصة بنظام التشغيل في ملفات .h

تم إنشاؤها على ١١ سبتمبر ٢٠١٦  ·  5تعليقات  ·  مصدر: TokTok/c-toxcore

حاليًا ، يتضمن network.h مجموعة كاملة من الرؤوس الخاصة بالمنصة (مثل u.h و windows.h و unistd.h ). يجب أن نحصرها في ملف واحد (أو بضعة ملفات).

أقترح أن ننشئ تجريدًا رقيقًا على مرافق نظام التشغيل للشبكات ، وآخر على تلك الخاصة بالساعة الرتيبة. يمكننا بعد ذلك الحصول على ملف واحد لكل نوع نظام أساسي (على سبيل المثال ، ${module}_win32.c ، _unix.c ، _osx.c ، _posix.c ، ...) وتجميعها بشكل مشروط وفقًا للمعالج المسبق الرموز ، تمامًا كما نفعل بالفعل. الجانب السلبي هو أنه يمثل زيادة طفيفة في النفقات العامة ، لأن هذه #ifdef s حاليًا هي وظائف داخلية ستحتاج إلى إعادة تعريف لكل منصة. الميزة هي أنه لا يوجد أو عدد قليل من #ifdef s في الكود نفسه ، وأن الكود الخاص بالنظام الأساسي موجود في مجموعة من الملفات الصغيرة بدلاً من (كما هو الآن) في ملف 1100 سطر يخلط تجريدات النظام الأساسي مع كود التطبيق.

P1 cleanup good first issue

التعليق الأكثر فائدة

ماذا عن إنشاء واجهة "نظام" يمكن تنفيذها بواسطة "نظام windows" و "نظام posix" و "نظام اختبار"؟ يمكن استخدام نظام الاختبار في اختبارات الوحدة ومحاكاة النظام دون إجراء مكالمات النظام فعليًا.

ال 5 كومينتر

يبدو جيدا

ماذا عن إنشاء واجهة "نظام" يمكن تنفيذها بواسطة "نظام windows" و "نظام posix" و "نظام اختبار"؟ يمكن استخدام نظام الاختبار في اختبارات الوحدة ومحاكاة النظام دون إجراء مكالمات النظام فعليًا.

أنا لا أوافق على اقتراح التنفيذ. أفضل أن أرى جميع الوظائف في ملف واحد {network,time,...}.c ، مع استخدام #ifdef s لتغليف الوظائف التي يجب كتابتها بشكل مختلف لكل منصة.

فوائد هذه الطريقة على الملفات المنفصلة ، هي أنه يمكننا فرض جميع التعليمات البرمجية الخاصة بالمنصة كوظيفة ثابتة ، وفضح واجهة برمجة تطبيقات واحدة للمستويات الأعلى من Toxcore. يمكن عرض أي تفاصيل تتعلق بتنفيذ النظام الأساسي بسهولة من ملف واحد. تتطلب خصائص النظام الأساسي التجريد والتعامل مع ملف واحد بدلاً من الملفات المتعددة. سيؤدي ذلك أيضًا إلى تسهيل صيانة ملف cmakelists.txt (لقد بدأ بالفعل في الابتعاد عنا.) ومراجعته لاحقًا باستخدام نظام المراجعة الحالي لدينا.

لم يتم إصلاحه بالكامل

وافق GrayHatter . لنحصل على ملف واحد يطبق تفاصيل نظام التشغيل.

أنا ألغي تعيين

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات