-3

我目前正在用 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可能设置不正确吗?

我的应用程序的源代码位于https://github.com/fish-guts/concurrent

4

1 回答 1

0

您在声明之前使用函数。C 语言允许隐式声明(最好不要使用它们),并自动声明函数 - 但隐式规则非常严格。后来你定义了函数,但它的原型与自动生成的不匹配。

可能的解决方案是:

  • 在使用之前定义函数
  • 在使用之前声明函数
  • 包括您的“command.h”,其中包含声明(这是特定情况下的最佳选择)
于 2014-06-14T17:30:54.737 回答