【问题标题】:How to resolve "multiple definition of 'main()'" C compiling error?如何解决“'main()'的多重定义”C编译错误?
【发布时间】:2021-05-19 01:19:45
【问题描述】:

我最近开始学习 C,必须创建一个程序,从标准输入中扫描两个整数值,用空格分隔,然后打印这两个整数的总和。必须能够接受负值。我正在使用 repl.it 编写代码 1st 然后粘贴到 .c 中进行编译。

尝试:

#include <stdio.h>

int main() {    

    int number1, number2, sum;

    printf("Enter two integers: ");

    scanf("%d", &number1);

    scanf("%d", &number2);

    // calculating sum

    sum = number1 + number2;      

    printf("%d + %d = %d", number1, number2, sum);

    return 0;
}

[OP 最初说“除了这个打印”——但这不是程序输出——这是程序运行之前编译过程中的错误输出]

除非我尝试编译 IDE 输出错误

/tmp/t2-8eec00.o: In function `main':
t2.c:(.text+0x0): multiple definition of `main'
/tmp/t1-f81f83.o:t1.c:(.text+0x0): first defined here
/tmp/t3-72a7ab.o: In function `main':
t3.c:(.text+0x0): multiple definition of `main'
/tmp/t1-f81f83.o:t1.c:(.text+0x0): first defined here
/tmp/main-2c962b.o: In function `main':
main.c:(.text+0x0): multiple definition of `main'
/tmp/t1-f81f83.o:t1.c:(.text+0x0): first defined here
clang-7: error: linker command failed with exit code 1 (use -v to see invocation)
exit status 1

输出错误,我犯了什么错误?获取期望值的正确方法是什么?

(例如 1+2=3)

使用它的平台:

https://imgur.com/a/9E8RzAO

【问题讨论】:

  • ⟼请记住,尤其是在 Stack Overflow 上学习和提问时,尽可能让代码保持井井有条是很重要的。 Consistent indentation 有助于传达结构,更重要的是传达意图,这有助于我们快速找到问题的根源,而无需花费大量时间来尝试解码正在发生的事情。
  • 你是如何编译这个的?是不是不小心贴了两次?
  • 这是一个链接时间错误。显示您用于编译的命令行。如果您使用的是 IDE,您的项目中可能有两个文件,每个文件中都定义了 main()。
  • @Tarik 添加了对如何编译代码的编辑
  • 看起来您正在尝试编译多个文件,每个文件都有一个 main 函数。

标签: c


【解决方案1】:

这是一个项目管理问题。 IDE 显示您有 4 个文件,所有这些文件都相互冲突。你有t1.ct2.ct3.cmain.c。他们都试图定义main(),所以实际上你有一个4向冲突。

C 中的函数存在于整个项目的全局 命名空间中。

从项目中删除所有没有您实际需要的 main() 版本的文件,然后重新编译。 -- 或者将其他文件中的函数重命名为不同于main() 的相互不同的名称。您可能会收到警告说这些函数从未使用过,但项目将编译。

【讨论】:

    【解决方案2】:

    错误是说你已经多次定义了main函数,尝试在新文件中编译它。代码是正确的,所以尝试通过创建新文件来编译代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-23
      • 1970-01-01
      相关资源
      最近更新 更多