我目前正在用C编写程序。一切正常,但在尝试'make'时我收到了一些警告:
src/command.c: In function ‘cmd_create’:
src/command.c:43:3: warning: implicit declaration of function ‘iterator_init’ [- Wimplicit-function-declaration]
iterator_init(&it);
^
src/command.c:49:6: warning: implicit declaration of function ‘iterator_destroy’ [- Wimplicit-function-declaration]
iterator_destroy(&it);
^
src/command.c: At top level:
src/command.c:218:6: warning: conflicting types for ‘iterator_init’ [enabled by default]
void iterator_init(iterator *it) {
^
src/command.c:43:3: note: previous implicit declaration of ‘iterator_init’ was here
iterator_init(&it);
^
src/command.c:245:6: warning: conflicting types for ‘iterator_destroy’ [enabled by default]
void iterator_destroy(iterator *it) {
^
src/command.c:49:6: note: previous implicit declaration of ‘iterator_destroy’ was here
iterator_destroy(&it);
^
我的研究表明,这通常发生在实际通话后声明功能。
但是我已经正确地将函数的原型放在我的头文件中,所以想知道还有什么可能导致这个问题。我的makefile可能设置不正确吗?
答案 0 :(得分:0)
在声明之前使用函数。 C语言允许隐式声明(最好不要使用它们),并自动声明函数 - 但隐式规则非常严格。稍后你定义了函数,但是它的原型与自动生成的函数不匹配。
可能的解决方案是: