解决有关功能的夹板警告“未使用”而它们作为参数传递
题
在我的节目中,夹板检查员发出警告:
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()函数 。该程序使用 expat XML解析器,该解析器适用于回调。您为解析器提供了一个函数:
XML_SetElementHandler(parser, start, end);
解决方案
您是否在同一个定义了 start()
的翻译单元(通常是.c源文件)中调用 XML_SetElementHandler()
?如果是这样,警告可能是正确的:将 static
添加到函数定义中,并检查您的应用程序是否仍然没有错误地链接。
其他提示
'static'关键字有效地隐藏了其他翻译单元(通常是.C文件)中的函数名称。代码仍在那里,从那个C文件中你可以获得函数的地址(但不能从其他C文件中获取)。然后,您可以通过调用函数,或从函数返回地址,或将其存储在全局变量等中,将地址传递给其他翻译单元。
我倾向于声明所有未被导出为静态的函数。我受过教育,目前认为这样做很好。 (免责声明:与大多数事情一样,这个'规则'有很多例外。)
不隶属于 StackOverflow