C:使用#include时重新定义函数

问题描述 投票:0回答:1

我在 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 中,即使该函数没有重新定义。
请注意,该代码是示例代码:实际上,源代码要复杂得多,所以我试图简化。
有办法解决这个问题吗?谢谢。

c function include redefinition
1个回答
0
投票

因为

include
将替换您指定的文件名代码。

所以在 file1.c 中将是

static int sampleFunction(){
    return 0;
}
static int anotherSampleFunction(){
    return sampleFunction()*2;
}

当到达

main.c
时,它将定义
sampleFunction()
两次,包括您所包含的内容。

因此,在

main.c
中,您必须仅包含
file1.c

但实际上,您应该使用头文件而不是包含

.c
文件。

© www.soinside.com 2019 - 2024. All rights reserved.