在C文件中包含源文件

时间:2013-07-01 14:08:52

标签: c compilation

我对C很新,所以我为这个新问题道歉。

我想在我的项目中使用此源代码:http://base64.sourceforge.net/b64.c

所以,我把它包含在我的测试文件中:

#include <stdio.h>
#include "b64.c"

int main()
{
   return 0;
}

但是,main()也在b64.c中定义,因此在编译时,我得到:

test.c:4:5: error: redefinition of ‘main’
b64.c:495:5: note: previous definition of ‘main’ was here
test.c: In function ‘main’:
test.c:5:1: error: number of arguments doesn’t match prototype
b64.c:495:5: error: prototype declaration

此源文件的正确用法是什么,或者是什么?我们如何正确使用它,或使用该文件中定义的函数?

编辑:我知道问题是由于主要的重复定义。我知道只能有一个。我的问题是,不是每个有意义的项目都需要它的主要方法吗?那么为什么在b64.c中定义了一个主方法呢?我们是否应该从源代码中删除此方法?奇怪的是,源代码不仅准备好被包含和使用。

7 个答案:

答案 0 :(得分:1)

#include C源文件放入代码中绝不是一个好主意。您可以将其他C源文件中的代码复制到代码中,或者在代码中包含所需的原型并调用函数,在单独编译它们之后将它们链接起来。

答案 1 :(得分:0)

当您包含该源文件时,您将获得2 main()声明,这是不正确的。所以你在这种情况下重新定义了“main”。

.c包含在另一个.c文件中没有意义。 C文件编译为.obj文件,这些文件由链接器链接到可执行代码中,因此不需要将一个.C文件包含在另一个文件中。相反,您可以创建一个列出函数的.h文件并包含该.h文件

答案 2 :(得分:0)

你应该使用两个主要功能之一。 如果你想要一个新的main,你可以在你的文件中写下你的main方法并将它从'b64.c'文件中删除,如果你想从'b64.c'文件中使用它删除你的(空)main。

答案 3 :(得分:0)

如果在b64.c中定义main,您不能简单地在主源文件中重新定义它。

你想要的是在程序中使用b64.c中的几个函数。从中删除main函数并创建一个头文件,您可以在其中对b64.c中的所有函数进行原型调整。之后,在主程序中包含此头文件。看看this short Wikipedia entry。它应该为您提供该主题的概述。

除此之外:你似乎对C.不太熟悉。尝试一些教程并继续阅读有关C的内容。

答案 4 :(得分:0)

首先,您必须将.c文件重新声明为.h,然后您必须浏览源代码并重命名任何重复的方法或全局变量名称。主要方法是程序的起点,因此只能有一个。

答案 5 :(得分:0)

(通常你不包括.c文件,只有.h) 如果你想要“b64.c”中的函数,你应该删除“b54.c”中的主函数!

答案 6 :(得分:0)

C应用程序需要一个main()函数。您的文件b64.c看起来像一个自给自足的C程序,因此您不需要test.c.只需编译并运行b64.c.