我看到了重新定义函数 here在c中使用宏。所以我很感兴趣是否可以重新定义 main 函数?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char **argv)
{
printf("Original main function\n");
return 0;
}
int _main(int argc, char **argv)
{
printf("New Original main function\n");
return main(argc, argv);
}
#ifdef DEBUG
#define main(argc, argv) _main(argc, argv)
#endif
编译的代码没有任何问题,但我得到:
Original main function
所以我想知道为什么它不起作用?当我对 malloc
和 free
函数使用相同的技术时,它工作得很好。那有什么问题呢?
为什么我想做这样的事情?我想在执行 main
函数之前做一些代码。这样可以吗?如果没有,还有其他方法吗?
附注:抱歉我没有提到问题。我在 Ubuntu 操作系统中使用 gcc。 如果您不赞成投票,请在评论中说明理由。您的意见对我的进一步发展非常有用。
最佳答案
如果你想改变你的程序的入口点,你不需要玩定义。您可以为此使用链接器的 -e
选项:
gcc -Wl,-e,__main ...
请注意额外的下划线。根据某些选项,符号名称可能不同。
关于c - 是否可以在c中重新定义main函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22170515/