首页 > 解决方案 > 键入的代码与书中完全相同,返回错误

问题描述

按照我的文本的指示,创建了两个单独的 .c 文件,它们将在编译时合并。但是,一个文件每次都返回一个错误,因此永远不会创建合并的文件。

我已经在 Ubuntu 和在线 C/C++ 编译器上运行了这些程序,并且可能已经阅读了 5 次文本。该代码在所有情况下都与文本中的内容匹配,但仍然出现错误。这是第一个文件的代码,称为 abs_func.c:

int absolute(int num)
{
    if (num < 0)
       return (-num);
    else
       return (num);
}

这是第二个文件 abs_main.c 的代码:

#include <stdio.h>

int absolute(int num);
int main()
{
    int x = -12, y;
    y = absolute(x);
    printf("The absolute value of %d is %d\n", x, y);
}

然后,我通过使用链接:

gcc abs_main.c abs_func.c -o abs

我希望上面显示的文件与我的其他文件(显然有零错误)合并并且能够打开新文件,但这并没有发生。返回的错误是:/tmp/cc2EySTq.o: In function main': /home/main.c:15: undefined reference toabsolute' collect2: error: ld returned 1 exit status

标签: c

解决方案


您的代码是正确的,您的 : gcc abs_main.c abs_func.c -o abs 是正确的。但是您没有输入:gcc abs_main.c abs_func.c -o abs,您输入了:gcc main.c abs_func.c -o abs,这就是您收到消息的原因:/home/main.c:15: undefined reference to绝对。


推荐阅读