隐式函数声明,尽管使用了 #include

  • 本文关键字:#include 函数 声明 c
  • 更新时间 :
  • 英文 :


我意识到这个问题已经被问了很多次,但没有一个解决方案奏效。这是我有一个简单的测试代码。

测试.h

#ifdef TEST_H
#define TEST_H
int return_int_3();
#endif

测试.c

#include "test.h"
int return_int_3() {
return 3;
}

主.c

#include "test.h"
#include <stdio.h>
int main(void) {
printf("%d", return_int_3());
return 0;
}

我看不出有什么问题。一种解决方案是您必须将"test.h"的包含放在我所做的最顶部。其他解决方案是说你必须在使用 main 之前声明函数,我认为 #include 会处理这个问题。所以,我对问题是什么感到困惑。它确实有效并产生正确的输出,但是解决此问题的正确方法是什么?如果有帮助,我正在使用 gcc 版本 10.1.0。谢谢。

正如乔纳森所说,你的问题在test.h文件中

#ifdef TEST_H
#define TEST_H
int return_int_3();
#endif

由于TEST_H没有定义ifdef和endif之间的代码不使用。 您需要使用 ifndef

#ifndef TEST_H
#define TEST_H
int return_int_3();
#endif

这里TEST_H没有 def,所以使用代码,TEST_H设置所以双包含不是问题。

最新更新