gpt4 book ai didi

c - 函数隐式声明和类型冲突警告

转载 作者:行者123 更新时间:2023-11-30 21:11:19 26 4
gpt4 key购买 nike

我目前正在用 C 编写一个程序。一切正常,但在尝试 calk '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);
^

我的研究表明,这种情况通常发生在实际调用后声明函数时。

但是我已经正确地将函数的原型(prototype)放入我的头文件中,所以想知道还有什么可能导致此问题。我的 makefile 可能设置不正确吗?

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

最佳答案

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

可能的解决方案是:

  • 在使用函数之前先定义它
  • 在使用函数之前先声明它
  • 包含您的“command.h”,其中包含声明(这是特定情况下的最佳选择)

关于c - 函数隐式声明和类型冲突警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24222413/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com