معالجة جبيرة تحذيرات عن وظائف "لا تستخدم" بينما هم كمعاملات

StackOverflow https://stackoverflow.com/questions/411726

  •  03-07-2019
  •  | 
  •  

سؤال

على برنامج لي ، جبيرة مدقق يحذر:

expat-test.c:23:1: Function exported but not used outside expat-test: start
  A declaration is exported, but not used outside this module. Declaration can
  use static qualifier. (Use -exportlocal to inhibit warning)
   expat-test.c:38:1: Definition of start

الدالة start() هو المستخدمة.يستخدم البرنامج المغتربين محلل XML التي تعمل مع رد.كنت تعطي محلل وظيفة:

XML_SetElementHandler(parser, start, end);

و محلل المكالمات مرة أخرى في بعض النقاط.هذا هو تعبير شائع جدا في C و أنا أتساءل لماذا جبيرة يشكو.أجد شيء في أسئلة وأجوبة أو في دليل.

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

المحلول

تسمون XML_SetElementHandler() في نفس الترجمة وحدة (عادة .ج الملف المصدر) الذي start() هو تعريفها ؟ إذا كان الأمر كذلك, تحذير قد تكون صحيحة:إضافة static إلى تعريف الدالة والتحقق إذا كان التطبيق الخاص بك لا يزال الروابط دون أخطاء.

نصائح أخرى

إن 'ثابت' الكلمة بشكل فعال يخفي اسم وظيفة من الترجمة الأخرى الوحدات (.ج الملف عادة).رمز لا يزال هناك, و من هذا الملف C يمكنك الحصول على عنوان الوظيفة (ولكن ليس من غيرها من الملفات C).ثم يمكنك تمرير عنوان الترجمة الأخرى الوحدات ، إما عن طريق استدعاء الوظائف ، أو إعادة معالجة من وظيفة ، أو تخزينه في متغير عمومي ، إلخ.

أنا أميل إلى إعلان جميع الوظائف التي يتم تصديرها ثابت.تم تدريسها حاليا يعتقدون أن هذا هو ممارسة جيدة للقيام بذلك.(تنويه:كما هو الحال مع معظم الأشياء ، هناك العديد من الاستثناءات على هذا 'القاعدة'.)

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