更改入口点" main"

时间:2015-04-05 21:23:13

标签: c

如何更改程序的“主要”入口点?

#include<stdio.h>       
int main(int argc, char *argv[])  
{ 
 printf("%s\n","Hello world!");    
 return 0;
} 

2 个答案:

答案 0 :(得分:4)

gcc -o entry_test -Wl,-eother entry_test.c

#include<stdio.h>       

int other(void){//can't use argc, argv
    printf("Bye-Bye world!\n");
    return 0;
}

int main(int argc, char *argv[]){
    printf("%s\n","Hello world!");
    return 0;
}

答案 1 :(得分:1)

如果你正在使用gcc,我发现一个线程说你可以使用-e命令行参数指定一个不同的入口点;正如BLUEPIXY所述 另见:

Avoiding the main (entry point) in a C program

- 请参阅以下链接,了解有关&#34; -e&#34;的更多详情;选项:

http://gcc.gnu.org/ml/gcc/2001-06/msg01959.html

另一种方法是在链接器中更改启动功能&#34;启动&#34; file ..链接器可能在start.o等文件中包含一些pre-main启动代码,而这段代码运行以设置C环境然后调用main(如在所有嵌入式工具链中)。没有什么可以阻止你用一些调用另一个函数的东西代替它。

这是启动文件的一个很好的解释:

What is the bootloader and startup code in embedded systems?

我投了这个问题,因为它对某些嵌入式c开发人员来说确实很有用。