gpt4 book ai didi

c++ - 选择性抑制输出到终端 C++。

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:23:28 26 4
gpt4 key购买 nike

我有一堆 .cpp 文件,它们一起处理相似但大小不同的数据文件。对于较大的数据文件,我想对 .cpp 文件中的函数进行一些时序研究。

我想抑制输出这些大数据集的结果,只打印计时结果。对于较小的数据集,我想打印到屏幕上以验证算法/代码的正确性。

与其反复注释/取消注释适当的 cout 语句并重新编译,我更愿意使用命令行参数(或其他一些技术)来有选择地抑制输出。

有什么建议吗?我能想到的最简单的方法是使用 argcargv,但我不确定它们是否是可以跨不同文件的函数使用的全局变量。

最佳答案

您的直觉是正确的——使用传递到您的main 函数中的argcargv 值——但它们不是全局变量。您需要以某种方式使您的信息全局化:我建议对参数进行一次解析,并保留一组可以轻松查询的全局标志。

例如:

// In a common header file that gets included in each source file
extern bool g_bFlag1;
extern bool g_bFlag2;
...

// In your main source file
bool g_bFlag1 = false;
bool g_bFlag2 = false;
...
int main(int argc, char **argv)
{
// Parse command line and store results in global flags
for (int i = 1; i < argc; i++)
{
if (strcmp(argv[i], "--flag1") == 0)
g_bFlag1 = true;
else if (strcmp(argv[i], "--flag2") == 0)
g_bFlag2 = true;
else
; // etc.
}
}

// In any other source file:
if (g_bFlag1)
{
// do stuff if and only if g_bFlag1 is set
}

然后你可以在命令行中传递--flag1。对于更复杂的参数解析,我建议使用诸如 GNU getopt 之类的库.

关于c++ - 选择性抑制输出到终端 C++。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7492448/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com