我有一堆 .cpp
文件,它们一起处理相似但大小不同的数据文件。对于较大的数据文件,我想对 .cpp 文件中的函数进行一些时序研究。
我想抑制输出这些大数据集的结果,只打印计时结果。对于较小的数据集,我想打印到屏幕上以验证算法/代码的正确性。
与其反复注释/取消注释适当的 cout
语句并重新编译,我更愿意使用命令行参数(或其他一些技术)来有选择地抑制输出。
有什么建议吗?我能想到的最简单的方法是使用 argc
和 argv
,但我不确定它们是否是可以跨不同文件的函数使用的全局变量。
最佳答案
您的直觉是正确的——使用传递到您的main
函数中的argc
和argv
值——但它们不是全局变量。您需要以某种方式使您的信息全局化:我建议对参数进行一次解析,并保留一组可以轻松查询的全局标志。
例如:
// 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/