سؤال

جبيرة تعطيني التحذير التالي:

encrypt.c:4:8: Function exported but not used outside encrypt: flip
  A declaration is exported, but not used outside this module. Declaration can
  use static qualifier. (Use -exportlocal to inhibit warning)
   encrypt.c:10:1: Definition of flip

منذ أن اتصلت بشير فقط في هذا الملف كيف يعرف ذلك؟

#include        <stdio.h>
#include        <stdlib.h>

int    flip( int a)
{
        int b;
        b = a;
        b ^= 0x000C;
        return b;
}

int     blah(int argc, char    *argv[]) {

        FILE    *fp = NULL, *fpOut=NULL;
        int             ch;
        ch = 20; flip(20); return (ERROR_SUCCESS);
}

لقد تخلصت من الرئيسي حتى لا يمكن معرفة أن الملف مكتمل بأي شكل من الأشكال. أنا مرت تماما!

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

المحلول

قد تجد أنه إذا قمت بتضمين رأس إعلان flip() - كما يجب، بالطبع - ثم splint لن يشكو. يجب أن تعلن أيضا blah() في الرأس كذلك.

أنا غير مقتنع تماما أن هذا هو التفسير ل blah() لا يستخدم على الإطلاق (على الرغم من أنه يستخدم flip()) ولا تذكر splint يشكو من ذلك.

ومع ذلك، فهي ممارسات جيدة لجعل كل وظيفة (في ج) static حتى تتمكن من إظهار أنه مطلوب خارج ملف المصدر الخاص به، ثم تأكد من وجود رأس يعلن الوظيفة، ويستخدم هذا الرأس في الملف الذي يحدد الوظيفة وفي كل ملف يستخدم الوظيفة.

في C ++، يجب أن تكون كل وظيفة static"نصيحة تصبح" كل وظيفة يجب تعريفها في مساحة الاسم المجهول ".

نصائح أخرى

منذ أن اتصلت بشير فقط في هذا الملف كيف يعرف ذلك؟

لقد أجبت على سؤالك. لقد قمت بتغذيةها في ملف واحد لينت، حتى الوبر تعرف هناك ملف فقط للعناية به (بصرف النظر عن الرأس القياسي يشمل، بالطبع).

Int Flip () لا يتم الإعلان عن ثابت، لذلك يمكن استخدامه خارجيا. نظرا لأنك استدعاء جبيرة مع ملف مصدر واحد فقط، فإنه يقول بشكل صحيح أن وظيفتك، إن لم تكن تستخدم خارجيا، يجب أن تعلن ثابتا

يمكن أن يقدم فقط عن ما تراه. تجاهل التحذير أو اتبع التعليمات التي تمنعها إذا كنت تعرف أفضل مما تقوله. لا تفترض أن أداة مثل هذا يعرف بالضرورة برنامجك أفضل مما تفعله.

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

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