C++ 是否可以在Visual Studio 2010中隐藏#定义/宏?

C++ 是否可以在Visual Studio 2010中隐藏#定义/宏?,c++,visual-studio-2010,macros,c-preprocessor,C++,Visual Studio 2010,Macros,C Preprocessor,我有一些代码,我用秒表来记录执行时间的走向。我不想总是运行它,所以我认为处理计时器最有效的方法是使用预处理器宏。对于下面的示例,如果定义了ENABLE\u ENGR\u PROFILING,我将在秒表上调用start()函数,做一些工作,然后在秒表上调用accumulate(),它将从start()开始测量时间增量,并将其添加到时间计数器中。然后在节目结束时,我可以把时间倒出来,看看时间到哪里去了。这很好,但它添加了很多代码。当我在做算法时,我不想被计时器代码分心。在下面的7行中,我真的只想在编

我有一些代码,我用秒表来记录执行时间的走向。我不想总是运行它,所以我认为处理计时器最有效的方法是使用预处理器宏。对于下面的示例,如果定义了
ENABLE\u ENGR\u PROFILING
,我将在秒表上调用start()函数,做一些工作,然后在秒表上调用accumulate(),它将从start()开始测量时间增量,并将其添加到时间计数器中。然后在节目结束时,我可以把时间倒出来,看看时间到哪里去了。这很好,但它添加了很多代码。当我在做算法时,我不想被计时器代码分心。在下面的7行中,我真的只想在编写程序时看到一行,
someTimeConsumingCode()
。有没有办法在VisualStudio2010中隐藏这些宏

#if defined(ENABLE_ENGR_PROFILING)
stopwatch.start();  
#endif
someTimeConsumingCode();
#if defined(ENABLE_ENGR_PROFILING)
stopwatch.accumulate(); 
#endif

我不认为您可以完全隐藏代码,但您可以定义一些宏来清除混乱:

#if defined(ENABLE_ENGR_PROFILING)
#define DECLARE_STOPWATCH() TStopWatch stopwatch; // <- whatever your class type actually is
#define START_STOPWATCH() stopwatch.start()
#define ACCUMULATE_STOPWATCH() stopwatch.accumulate()
#else
#define DECLARE_STOPWATCH()
#define START_STOPWATCH()
#define ACCUMULATE_STOPWATCH()
#endif

你所说的“在算法上工作”是什么意思?在算法上,我指的是除计时器之外的所有东西……我想在处理算法/主程序代码时忽略计时器(看不到)。你能移到2012年或2013年吗?Lambda使这种事情比宏更好…@486DX2-66-那么分心是如何发生的呢?您可以使用visual studio大纲功能折叠if块。
DECLARE_STOPWATCH();
...
START_STOPWATCH();
someTimeConsumingCode();
ACCUMULATE_STOPWATCH();