我在 C 中遇到了一个无法恢复的问题,即“[函数]的重新定义”,当我检查重新定义时,我没有看到任何问题。
当文件像这样写入时,总是会发生这种情况:
文件2.c
static int sampleFunction(){
return 0;
}
文件1.c
#include "file2.c"
static int anotherSampleFunction(){
return sampleFunction()*2;
}
main.c
#include "file1.c"
#include "file2.c"
int main(){
return sampleFunction()+anotherSampleFunction();
}
编译后,
“重新定义sampleFunction”
将出现在 file2.c 中,即使该函数没有重新定义。
请注意,该代码是示例代码:实际上,源代码要复杂得多,所以我试图简化。
有办法解决这个问题吗?谢谢。
因为
include
将替换您指定的文件名代码。
所以在 file1.c 中将是
static int sampleFunction(){
return 0;
}
static int anotherSampleFunction(){
return sampleFunction()*2;
}
当到达
main.c
时,它将定义 sampleFunction()
两次,包括您所包含的内容。
因此,在
main.c
中,您必须仅包含 file1.c
。
但实际上,您应该使用头文件而不是包含
.c
文件。