我意识到这个问题已经被问了很多次,但没有一个解决方案奏效。这是我有一个简单的测试代码。
测试.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设置所以双包含不是问题。