题
夹板给我以下警告:
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
它只能在其上所看到的报告。忽略警告或按照指令来禁止它,如果你知道比它更好的说。不要以为这样的工具,一定知道你的程序比你做的更好。
如果真的无意的文件外使用,你可以对它做静态声明,并应纠正问题,但它会从其他文件无法访问。
不隶属于 StackOverflow