我正在使用一个名为onlinegdb(https://www.onlinegdb.com/online_c_compiler)的在线编译器
我写了一个简单的程序
#include <stdio.h>
double abs(double a) {
if(a < 0) a=-a;
return a;
}
但我得到这个结果:main.c:11:8: warning: conflicting types for built-in function ‘abs’
double abs(double a) {
^~~
/usr/bin/x86_64-linux-gnu-ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index 11
/usr/bin/x86_64-linux-gnu-ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 1 has invalid symbol index 12
/usr/bin/x86_64-linux-gnu-ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 2 has invalid symbol index 2
/usr/bin/x86_64-linux-gnu-ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 3 has invalid symbol index 2
....
/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
问题出在哪儿 ?它与我的计算机,网站或代码有关吗?
最佳答案
在C语言中,您应该始终具有main()
函数,因为计算机始终从主函数开始执行代码。另外,abs
是用C定义的函数,因此您不能仅将另一个函数命名为abs
。相反,您可以执行以下操作:
#include <stdio.h>
#include <stdlib.h>
int main(){
int a;
printf("Enter the number to calculate the absolute value of: ");
scanf("%d", &a);
a = abs(a);
printf("%d", a);
return 0;
}
我决定在看到这个问题后开始学习C,因此我的代码可能并不完美,但是我希望它对您有用。
关于c - 在线C编译器中对 `main'的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64235012/