-1

我对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

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

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

4

7 回答 7

1

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

于 2013-07-01T14:13:17.610 回答
0

When you are including that source file you are getting 2 main() declaration which is incorrect. So you have redefined "main" in this case.

Including .c into another .c file doesn't make sense. C files compile to .obj files, which are linked by the linker into the executable code , so there is no need to include one .C file into another. Instead, you can make a .h file that lists the functions and include that .h file

于 2013-07-01T14:11:53.660 回答
0

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

于 2013-07-01T14:12:31.840 回答
0

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

你想要的是在你的程序中使用来自 b64.c 的几个函数。从中删除main函数并创建一个头文件,您可以在其中对 b64.c 中的所有函数进行原型制作。之后,将此头文件包含在您的主程序中。看看这个简短的维基百科条目。它应该为您提供该主题的概述。

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

于 2013-07-01T14:13:11.350 回答
0

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

于 2013-07-01T14:13:17.327 回答
0

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

于 2013-07-01T14:15:55.713 回答
0

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

于 2013-07-01T14:13:56.397 回答