如何更改程序的“主要”入口点?
#include<stdio.h>
int main(int argc, char *argv[])
{
printf("%s\n","Hello world!");
return 0;
}
答案 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开发人员来说确实很有用。