在 main() 中获取没有参数的命令行参数

Get command line arguments without arguments in main()

一件奇怪的事夺走了我的睡眠。 .

我有 P7 图书馆。是写日志的库。

库中包含的示例很少。 C++ 的示例如下所示:

int main(int i_iArgC, char* i_pArgV[])
{
   // Some code that don't use i_iArgC or i_pArgV
}

但是程序以某种方式处理命令行参数的技巧。
我玩了一点,确保这个主叫。
我做什么:

  1. 在调试中构建并在 main 上设置断点(以确保完全 这个main被称为)
  2. main(int i_iArgC, char* i_pArgV[])更改为main()(确保没有人使用它们)

我不知道怎么可能。

以下是您可以自行查看的最少步骤:

  1. this 页面(link 在左上角)下载 P7 代码
  2. 解压缩存档
  3. 运行 build.sh(它按某种顺序运行几个 makefile)
  4. Binaries 文件夹执行 Cpp_Example
  5. 再次执行 Cpp_Example /P7.Help 以查看应用对命令行参数的反应。

大多数系统允许在不依赖 main() 的情况下获取命令行参数。例如,在 Windows 上,您可以使用 GetCommandLineW().

库中有不可移植的代码可以在 Shared/Platforms/*/PProcess.h 中做到这一点。快速查看 Windows_x86/PProcess.h 表明它使用 GetCommandLineW() 并且 Linux_x86/ 中的同一文件读取 /proc/self/cmdline.