c - 替换入口点函数会导致段错误

标签 c gcc compilation

我在 C 中有以下程序:

#include<stdio.h>

int main()
{
  printf("Normal.\n");
  return 0;
}

int fff()
{
  printf("Fun!\n");
  return 0;
}

我想编译它,以便当我运行该程序时,它会给我“有趣!”。我使用以下行来编译我的程序:

gcc deneme.c -e fff -o deneme

当我运行名为“deneme”的程序时,我得到:

Fun!
Segmentation fault (core dumped)

正如你所看到的,我得到了我想要的,但不理解“段错误”部分。原因是什么?

最佳答案

您尝试将 fff() 指定为入口函数,但 -e 标志替换了函数 _start,而不是 main 。您需要将 fff 的返回类型更改为 void 并在函数末尾调用 _exit

void fff()
{
    printf("Fun!\n");
    _exit(0);
}

关于c - 替换入口点函数会导致段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36122587/

相关文章:

compilation - 虚拟机上的 Linux 内核

java - Java中的变量事件

c - 我在在线程序挑战编译器中遇到演示错误

c - 如何打印void**的内存地址?

c - 在数据类型之间切换

c++ - 强制 CMake 将 C++ 编译器用于带有 Visual Studio 的 C 文件

c - 在msm800中启用硬件看门狗

c++ - GCC编译器在查找头文件时不搜索子目录

代码 :blocks not compiling code in Ubuntu Linux

haskell - 构建命令后的 Cabal(Haskell 构建系统)