c - 在线C编译器中对 `main'的 undefined reference

标签 c compiler-errors

我正在使用一个名为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/

相关文章:

perl - 如何修复 Perl 的 Font::FreeType 编译错误?

c - SysGCC 工具链在 sysroot 中找不到文件

c - 为什么我不能像 C 中的指针一样对待数组?

c - 解析输入并添加到结构数组

c++ - 预处理的 C/C++ 文件是否特定于机器?

c - 从 C 中的路径拆分文件名

C 结构函数语法 - 传递元素,返回结构

java - 类不再被正确识别

c++ - 无法声明字段 ‘Executive::history’为抽象类型

qt - Qwt和Boost::signals