gpt4 book ai didi

C99 : Call main function from another 'main' ?

转载 作者:行者123 更新时间:2023-12-02 05:32:56 25 4
gpt4 key购买 nike

这个question有类似的标题,但我们正在讨论不同的事情。

假设我想调用 main代码 foo.c

int main(){
...
}

问题是调用者是另一个 main例行公事,而且似乎不可能有两个 main职能。

如何调用 foo.c的主要功能来自另一个 main ?
main的名称在 foo.c 无法更改 ,因为它不是用户代码。

最佳答案

and it seems impossible to have two 'main' functions.



在同一个对象(二进制、共享库)中不能有两个具有相同名称的符号...

编译结束时,编译器合并所有 objects files进入您的目标,按名称解析符号。无法区分你的两个 main s 如果他们有相同的名字。

重命名函数之一(不是程序真正入口点的函数)。

编辑:如果你不能从代码中接触到对方的主名,请在编译后更改。以 gcc 为例:
gcc -o other_main.o -c other_main.c
objcopy --prefix-symbols=foo_ other_main.o
gcc -o yourbinary other_main.o main.c

然后,调用 foo_main而不是 main在你的真实 main .

关于C99 : Call main function from another 'main' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31519449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com