gpt4 book ai didi

c - 头文件中找不到符号

转载 作者:行者123 更新时间:2023-11-30 18:14:15 24 4
gpt4 key购买 nike

我有这个c程序:

#include    <sys/types.h>
#include "ourhdr.h"

int glob = 6; /* external variable in initialized data */
char buf[] = "a write to stdout\n";

int
main(void)
{
int var; /* automatic variable on the stack */
pid_t pid;

var = 88;
if (write(STDOUT_FILENO, buf, sizeof(buf)-1) != sizeof(buf)-1)
err_sys("write error");
printf("before fork\n"); /* we don't flush stdout */

if ( (pid = fork()) < 0)
err_sys("fork error");
else if (pid == 0) { /* child */
glob++; /* modify variables */
var++;
} else
sleep(2); /* parent */

printf("pid = %d, glob = %d, var = %d\n", getpid(), glob, var);
exit(0);
}

在头文件“ourhdr.h”(位于同一文件夹中)中,我定义了几个函数,例如 err_sys()。使用 gcc 编译时出现此错误:

In function "main":
undefined reference to "err_sys"

我怎样才能让它工作?如果需要的话我可以在这里发布头文件。谢谢。

** 编辑:** 这是 ourhdr.h 文件:http://pastebin.com/fMUiG4zU

最佳答案

您已将头文件包含在 err_sys 声明中。确保您还有一个传递给链接器的实现。背景:

编译器将模块编译为目标文件:g++ -c modul1.c 生成 modul1.og++ -c modul2.c 生成 modul2.o

每个模块都可以引用包含的头文件中定义的函数。到目前为止,不需要实际实现该功能。

在下一步中,链接器将所有目标文件(和库)链接在一起:g++ modul1.o modul2.o 生成 ./a.out 或类似的

第二步,需要实现所有使用的功能。确保您提供了它!

(P.S.:有些编译器允许使用一个命令进行编译和链接,如果您有多个模块,您也许可以将它们添加到单个 gcc 调用中。不过,我建议使用 make)

关于c - 头文件中找不到符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17294269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com