相关疑难解决方法(0)

在C中_start()有什么用?

我从同事那里了解到,无需编写函数即可编写和执行C程序main().它可以在下面完成

withoutMain.c

/* Compile this with gcc -nostartfiles */

#include <stdlib.h>

void _start() {
  int ret = my_main();
  exit(ret); 
}

int my_main() {
  puts("This is a program without a main() function!");
  return 0; 
}
Run Code Online (Sandbox Code Playgroud)

将其编译为: my_main.c

运行方式为: main()

我的问题是,何时需要做这种事情?一些现实世界的场景?

c

115
推荐指数
3
解决办法
2万
查看次数

通过函数指针定义"main"

在C++中,main是否可以通过函数指针定义?例如:

int f(int, char**) {
    return 0;
}

int (*main)(int, char**) = &f;
Run Code Online (Sandbox Code Playgroud)

此代码正确编译和链接,但在运行时会触发分段错误.我相信这可能是因为它试图将函数指针的值作为代码执行.

另外,如果在普通的C++中不可能,那么可以通过gcc的非标准功能来实现(可能以某种方式改变导出符号的类型).

最后,如果使用gcc指令无法实现,可以使用自定义链接描述文件吗?

c c++ linker linker-scripts

3
推荐指数
1
解决办法
796
查看次数

标签 统计

c ×2

c++ ×1

linker ×1

linker-scripts ×1