我在一个工作区域下创建了一个简单文件,构建并成功执行。并再次在同一工作区域下创建了另一个文件。我收到链接错误,如:
构建时 "====Linking===== Error: Duplicate public_main in module...."
,当我尝试执行第一个文件时,我收到同样的错误。
请参阅以下代码并提出建议。
File1: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);
}
File2:two.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);
}
答案 0 :(得分: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通过一个简单的规则来解决这个问题 - 你只能这样做每个可执行文件中的每个函数一个 。
N.B。其他语言有不同的规则,C ++可以有多个具有相同名称但不同原型的函数(重载),或者在不同的类中(命名空间),它实际上通过所谓的名称修改来完成。 Python使用命名空间和复杂的范围规则等。
史蒂夫,我在每个可执行文件中只有一个main(),但我仍然是 得到相同的错误 - user2714972
您有2个.c文件,并且您将它们链接到单个可执行文件中, (.exe),这就是当你给它多个.c文件时gcc所做的事情 如果你想制作2个可执行文件,你需要两次调用gcc, 每次使用.c和使用-o differcent_exe_name来停止它们 叫a.out或a.exe - 史蒂夫巴恩斯
如果像某些人所建议的那样,您使用的是IDE,则需要根据IDE创建单独的项目或指定单独的目标。