gpt4 book ai didi

c++ - 我们不能包含 .c 文件吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:49:43 25 4
gpt4 key购买 nike

今天我在那里接受采访,他们问我可以包括 .c file到源文件?我说yes .因为几年前我在一些项目中看到了同样的情况,其中包括 .c file .但刚才我也在尝试同样的事情。

abc.c

#include<stdio.h>
void abc()
{ printf("From ABC() \n"); }


ma​​in.c

#include<stdio.h>
#include "abc.c"
int main()
{ void abc();
return 0;
}

出现错误:

<code>D:\Embedded\...\abc.c :- multiple definition of 'abc'</code>

哪里出错了?

我写了一个abc.h文件(abc.h的主体是{ extern void abc(void); }),并将文件包含在 abc.c 中(注释掉 #include abc.c )。工作正常。

最佳答案

按如下方式进行:

abc.c :

#include <stdio.h>
void abc()
{printf("From ABC() \n");}

main.c :

#include<stdio.h>
#include "abc.c"
int main()
{
abc();
return 0;
}

(不需要头文件)

然后,要编译,您编译main.c . 不要尝试同时编译 abc.cmain.c ,因为那样你就会有 abc()函数定义了两次。

你需要明白 #include基本上是“复制粘贴”,仅此而已。如果你告诉它#include "abc.c" , 它只会获取 abc.c 的内容,并将它们“粘贴”到您的 main.c 中文件。因此,将以上内容用于 main.c ,在预处理器处理它之后,你的 main.c看起来像这样(我忽略了 #include <stdio.h> s):

#include<stdio.h>
#include <stdio.h>
void abc()
{printf("From ABC() \n");}
int main()
{
abc();
return 0;
}

这是一个有效的程序。

也就是说你通常不应该这样做;你应该编译你所有的.c文件分开,然后才将它们链接在一起。

关于c++ - 我们不能包含 .c 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11334371/

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