【发布时间】:2019-12-04 05:01:13
【问题描述】:
一件奇怪的事情让我睡不着觉。 .
我有P7 图书馆。是写日志的库。
图书馆包含几个例子。 C++ 的示例如下所示:
int main(int i_iArgC, char* i_pArgV[])
{
// Some code that don't use i_iArgC or i_pArgV
}
但是程序以某种方式处理命令行参数的技巧。
我玩了一点,以确保这个 main 被调用。
我做什么:
- 构建调试并在
main上设置断点(以确保准确 这个main被调用) - 将
main(int i_iArgC, char* i_pArgV[])更改为main()(以确保没有人使用它们)
我不知道怎么可能。
您可以通过以下最少步骤自行查看:
- 从this页面下载P7代码(链接在左上角)
- 解压存档
- 运行 build.sh(它以某种顺序运行几个 makefile)
- 从
Binaries文件夹执行Cpp_Example - 再次执行
Cpp_Example /P7.Help以查看该应用对命令行参数的反应。
【问题讨论】:
-
我找到了!整洁。
-
您发现代码在哪里使用
i_iArgC等? -
没有定义(宏)或标志来选择其他程序入口点(然后重定向到
main)? -
没有。我没有发现这样的技巧。构建尽可能简单,没有办法隐藏这样的事情。但在一个头文件中,我发现了
#define P7TRACE_NO_VA_ARG_OPTIMIZATION和#include <stdarg.h>。也许他们以某种方式使用stdarg.h直接获取参数。 -
@isanae 完全正确。
标签: c++ command-line-arguments main