-5

我在一个工作区下创建了一个简单的文件,构建并成功执行。并再次在同一工作区下创建了另一个文件。我收到如下链接错误:

"====Linking===== Error: Duplicate public_main in module...."在构建时,当我尝试执行第一个文件时也遇到同样的错误。

请参阅以下代码并提出建议。

文件 1:n_numbers.c

#define N 10

main()  
{

int count;
float sum, number;

count=0;
sum=0;

printf("Enter 10 numbers to calculate the Sum");

while(N<10)
{
scanf("%f", &number);

sum=sum+number;

count=count+1;
}

printf("sum=5.2%", sum);
}

文件2:两个.numbers.c

main()
{

int a,b,c;

printf("Enter Two numbers for a and b\n");
scanf("%d %d",&a, &b);

c=a+b;

printf("c=%d", c);

}
4

1 回答 1

3

我怀疑你的问题是:

gcc file_a.c
a.out

作品

gcc file_b.c
a.out

作品

gcc file_a.c file_b.c

linker error

将是因为 gcc 正在尝试制作单个可执行文件,并且每个可执行文件必须只有一个main功能。

如果 file_a 和 file_b定义了一个称为函数的函数public_main,那么问题就变成了在任何给定的调用中要使用哪个函数 - C 通过一个简单的规则解决了这个问题 -每个可执行文件中的每个函数只能有一个

注意 其他语言有不同的规则,C++ 可以有多个具有相同名称但原型不同的函数(重载)或在不同的类中(命名空间),它实际上通过所谓的名称修饰来实现。Python 使用命名空间和复杂的范围规则等。

从评论中复制!

嗨史蒂夫,我在每个可执行文件中只有一个 main(),但我仍然遇到同样的错误 – user2714972

您有 2 个 .c 文件,并且将它们链接到一个可执行文件 (.exe) 中,这就是 gcc 在您提供多个 .c 文件时所做的事情,如果您想制作 2 个可执行文件,则需要调用 gcc 两次, 每个 .c 和 -o differentcent_exe_name 一次以停止同时被称为 a.out 或 a.exe – Steve Barnes

如果像某些人建议的那样,您使用的是 IDE,您需要根据 IDE 创建单独的项目或指定单独的目标。

于 2013-08-25T07:21:48.207 回答