没有主要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