没有主要function的C程序?
有没有办法在没有主函数的情况下编写C程序? 如果是这样,怎么能实现呢?
C将托管环境中的入口点定义为主要入口点。 但是,在“独立”环境中,入口点可以有其他名称。 这是该语言(至少是官方)在该特定方面允许的唯一纬度。
是的你可以。
_start
函数是调用main()
的C程序的入口点。
进一步研究,从程序员的角度来看, main()
是C程序的起点。 在调用main()
之前,进程执行大量代码以“清理执行空间”。
_start
是首先被调用的函数,然后分配必要的资源,然后调用main()
,它必须由程序员定义。
您可以覆盖_start
并告诉编译器不要使用“ -nostartfiles
”选项查找main()
。
#include //for using printf() _start() { printf("Hello world!!\n"); _exit(0); }
编译: gcc -nostartfiles code.c -o a.out
另请参阅http://linuxgazette.net/issue84/hawk.html以获取更多基本信息。
以下链接器滥用
char main[] = { /* Machine code for your target implementation */ };
将在某些平台上运行。
C号完全基于你在main()中启动程序的假设。 无论如何,你为什么要这样? 这会使其他程序员阅读您的代码时出现不一致。
也许这可行: http : //www.gohacking.com/2008/03/c-program-without-main-function.html
另一种方法是编写一个C程序并查看Assembly输出: http : //users.aber.ac.uk/auj/voidmain.shtml
有关调用main()之前发生的事情的更多信息可以在这里找到(如何处理初始化函数): http : //gcc.gnu.org/onlinedocs/gccint/Initialization.html