主要的多重定义首先在这里定义

时间:2016-01-18 13:58:06

标签: c compiler-errors main multiple-definition-error

我是编程新手,目前我正在学习C编程。我正在使用GCC编译器在代码块和代码块中编写代码。当我创建一个新项目时,(因为你知道它用它创建了main.c文件),并且因为我无法在该项目中编译另一个文件。

文件1:

 #include<stdio.h>

int main()
{
    int a,b,c,d;
    printf("Enter three numbers\n");
    scanf("%d%d%d",&a,&b,&c);
    d=a;
    if(b>d)
        d=b;
    if(c>d)
        d=c;
    printf("\n The maximum of three numbers is %d",d);

}

文件2:main.c

#include <stdio.h>

int main()
{
    printf("Hello world!\n");
    return 0;
}

当我编译第一个程序时,它显示以下错误: 主要&#39;的多重定义 首先在这里定义

我已尽力搜索,但我无法解决这个问题。在其中一个关于堆栈溢出的答案中,有人建议写这个 (项目 - &gt;构建选项...-&gt;链接器设置(选项卡))

-Wl,--allow-multiple-definition

当我写它时,没有错误。但它无法运行我的文件1,而是运行该main.c文件。即使我关闭main.c文件,它也会再次打开并运行main.c文件,它会输出&#34; Hello World!&#34;。

最初,当我使用代码块时,没有这样的错误。我不知道为什么会这样,而且我对编译器知之甚少。

3 个答案:

答案 0 :(得分:1)

如评论中所述,您只能有一个主要功能。

因此,当您启动一个新项目时,您需要将main.c文件替换为您要使用的main.c文件。或者你可以编辑'hello world&#39; main.c program。

当您在code :: blocks中启动一个新项目时,您可以使用一个打印“Hello World&#39;”的简单程序获取一个新目录。这个文件通常是main.c.您需要编辑此文件或替换它。 code :: blocks将这个简单的main.c程序放在新项目中的原因是你可以编译它并测试你的系统,而不必编写新的程序。

答案 1 :(得分:0)

某些计算机语言允许您对不同的函数使用相同的函数名称(由参数和有时返回类型标识)。这叫做重载。 C 允许这样做。 C中的函数必须具有唯一的名称。

main()函数是C中的一个特殊函数,因为它被用作应用程序的标准入口点。也就是说,将首先调用main()函数,并且应用程序应该开始并且(通常)在该函数中结束。

作为初学者,我建议您避免使用为您创建和构建项目的自动编辑器功能。你会错过学习如何做的事情。使用编辑器从空文件开始,了解它们如何连接以及如何从命令行使用编译器。命令行是每个初学者应该从IMO开始的。

它可能更难学习,但它会让你更好地了解正在发生的事情。

答案 2 :(得分:0)

我猜您可能想做的是拥有多个沙箱“要点”,您可能希望将其作为自己的主要功能运行。如果是这种情况,则只需关闭您的项目并直接打开文件。只要它们不在项目中,它们就可以正常运行。