【发布时间】:2018-06-29 21:15:55
【问题描述】:
我正在尝试编写一个没有 main 的 c++ 程序。是否可以将 mach-o 可执行文件的入口点更改为自定义函数(main() 除外)?
如果没有,那么是否可以在调用实际的 C main 之前包装 main 以调用我的 main 版本?
编辑:
我希望我的自定义函数调用 C main。如果我给它一个构造函数属性或将其添加到 ctor 列表中,那么 main 将被调用两次。我不希望这种情况发生。
P.S 我正在使用 clang 版本 9.1.0 在 Mac OS X High Sierra 中构建可执行文件
【问题讨论】:
-
你不能写
int main() { return myfunc(); }?只是好奇... -
@SeverinPappadeux 我的函数必须在 main 执行之前被调用,这样它应该是我的函数调用 C
main而不是编译器。这就是为什么我问是否有办法更改入口点或创建包装器。 -
为什么?它有什么不同?
-
你可以写一个静态类,把你的东西放到ctor里
-
@elvis.dukaj 您可以使用属性将您的函数放入 .init 部分(也在 .fini 中),不必编写代码