夹板给我以下警告:

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抱怨说。

然而,这是一个很好的做法,使每一个功能(在C)static直到可以证明它是需要它的源文件外,然后确保有声明的功能的标题,该标题是在定义该函数的文件,并在使用该功能的每个文件使用。

在C ++中,“每一个功能应当static”忠告变为“每个函数应在匿名命名空间来定义。”

其他提示

  

由于我打电话,它是如何知道夹板只有在这个文件?

您已经回答了你的问题。你已经供入一个文件棉绒,棉绒这样的知道只存在文件,以被照顾(除了标准报头包括,当然)。

INT翻转()未声明为静态的,因此它可以从外部潜在使用。因为你只有一个源文件调用夹板,它正确地说,你的函数,如果没有外部使用,必须声明为static

它只能在其上所看到的报告。忽略警告或按照指令来禁止它,如果你知道比它更好的说。不要以为这样的工具,一定知道你的程序比你做的更好。

如果真的无意的文件外使用,你可以对它做静态声明,并应纠正问题,但它会从其他文件无法访问。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top