有没有办法在调用main函数之前解析命令行选项?

时间:2015-10-21 06:01:59

标签: c++ c command-line clang command-line-arguments

当调用C / C ++程序时:

./prog --arg=42

命令行参数被转发到主函数

int main (int argc, char* argv[])

其中参数可以被解析(或转发到某个进行解析的库)。

我想知道在C运行时调用main函数之前是否可以拦截参数。 由于我编写了替换库,因此无法使用类似my_lib::init(argc, argv)的初始化函数。

我知道函数的__attribute__((constructor))因此在调用main之前调用它,但是我不知道如何在这样的标记函数中获取命令行参数。

1 个答案:

答案 0 :(得分:4)

我认为没有标准方法来拦截调用可执行文件的入口点main()

但是,您可以使用--wrap的{​​{1}}和-u选项来调整可执行文件的链接过程。在链接过程中还有其他选项可以替换符号,请考虑链接器的手册。