【发布时间】:2015-10-21 14:25:37
【问题描述】:
当调用 C/C++ 程序时:
./prog --arg=42
命令行参数被转发到主函数
int main (int argc, char* argv[])
可以解析参数的位置(或转发到进行解析的某个库)。
我想知道是否可以在 C 运行时调用 main 函数之前截取参数。
因为我写了一个替换库,所以我不能使用像 my_lib::init(argc, argv) 这样的初始化函数。
我知道__attribute__((constructor)) 是一个函数,因此在调用 main 之前调用它,但是我不知道如何在这样的标记函数中获取命令行参数。
【问题讨论】:
-
我们说的是哪个编译器?理论上应该可以更换 CRT 的一部分,我在过去的 DOS 时代做过类似的事情,这应该仍然有效。您可能想为您的问题添加正确的标签。也许你应该解释一下为什么你不能把你想要的逻辑放到 main 中并且需要在 main 之前执行它。
-
哎呀错过了 c++/c 标签。我一定会clang/llvm
-
你确定你不能简单地将你的代码变成
main(),然后在你完成处理后让它调用real_main(argc, argv),并让用户写real_main(),或者编辑该代码,使int main(int argc, char **argv)变为int real_main(int argc, char **argv)?
标签: c++ c command-line clang command-line-arguments