没有主要功能的C程序?

时间:2010-09-08 09:58:41

标签: c

有没有办法在没有主函数的情况下编写C程序?如果是这样,怎么能实现呢?

5 个答案:

答案 0 :(得分:9)

C将托管环境中的入口点定义为main。但是,在“独立”环境中,入口点可以有其他名称。这是语言(至少是官方)在特定方面允许的唯一纬度。

答案 1 :(得分:8)

是的,你可以。

_start 函数是调用 main() 的C程序的入口点。

从程序员的角度来看, main() 是一个C程序的起点。在调用 main() 之前,进程会执行大量代码以“清理执行空间”。

_start 是首先调用的函数,然后分配必要的资源,然后调用 main() ,该函数必须由程序员。

您可以覆盖 _start 并告诉编译器不要使用“ main()来查找 -nostartfiles “选项。

#include <stdio.h> //for using printf()
_start()
{
    printf("Hello world!!\n");
    _exit(0);
}

编译: gcc -nostartfiles code.c -o a.out

另请查看http://linuxgazette.net/issue84/hawk.html以获取更多基本信息。

答案 2 :(得分:4)

以下链接器滥用

char main[] = { /* Machine code for your target implementation */ };

可以在某些平台上运行。

答案 3 :(得分:3)

没有。 C完全基于你在main()中启动程序的假设。无论如何,你为什么要这个?这会使其他程序员阅读您的代码时出现不一致。

答案 4 :(得分:2)

也许这可行: 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