main 的多重定义首先在这里定义

multiple definition of main first defined here

我是编程新手,目前正在学习 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;
}

当我编译第一个程序时,出现如下错误: 'main' 的多重定义 首先在这里定义

我已经尽我所能进行了搜索,但我无法解决这个问题。在此处关于堆栈溢出的答案之一中,有人建议将其写在 (项目->构建选项...->链接器设置(选项卡))

-Wl,--allow-multiple-definition

我写的时候没有错误。但它无法 运行 我的文件 1,而是 运行 那个 main.c 文件。即使我关闭 main.c 文件,它也会再次打开,运行s main.c 文件给出输出 "Hello World!"。

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

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

因此,当您开始一个新项目时,您需要将 main.c 文件替换为您要使用的 main.c 文件。或者您可以编辑 'hello world' main.c 程序。

当您在 code::blocks 中开始一个新项目时,您可以使用打印 'Hello World' 的简单程序获得一个新目录。这个文件通常是main.c。您需要编辑此文件或替换它。 code::blocks 将这个简单的 main.c 程序放在新项目中的原因是您可以编译它并测试您的系统,而无需编写新程序。

一些计算机语言允许您对不同的函数使用相同的函数名称(由它们的参数和有时 return 类型来标识)。这就是所谓的超载。 C 不允许这样做。 C 中的函数必须具有唯一的名称。

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

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

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

我想您可能想要做的是拥有多个沙箱 "gists",您可能希望 运行 全部作为它们自己的主要功能。如果是这种情况,那么只需关闭您的项目并直接打开文件即可。只要他们不在项目中,他们就 运行 没问题。