gpt4 book ai didi

c - 在 C 中的 main() 函数之前打印 "Hello world"

转载 作者:太空狗 更新时间:2023-10-29 16:05:38 24 4
gpt4 key购买 nike

以下程序复制自Quora ,在 main() 函数之前打印 "Hello world"

#include <stdio.h>
#include <unistd.h>

int main(void)
{
return 0;
}

void _start(void)
{
printf ("hello, world\n");
int ret = main();
_exit (ret);
}

然后,我使用以下命令在 Ubuntu-14.04 GCC 编译器上编译了上面的程序

gcc -nostartfiles hello.c

并运行了a.out 可执行文件,但是我遇到了Segmentation fault (core dumped)?那么,为什么是段错误

最佳答案

_start 是可执行文件的真正入口点,通常由 C 运行时采用它来初始化其内容 - 包括 stdio -,调用标有 constructor 属性的函数然后调用您的 main 入口点。如果您使用它并尝试使用标准库中的内容(例如 printf),那么您的生活很危险,因为您正在使用尚未初始化的内容。

然而,您可以做的是完全绕过 C 运行时,并使用直接的系统调用打印,例如 write

关于c - 在 C 中的 main() 函数之前打印 "Hello world",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46742747/

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