运行时如何确定VisualStudioC++中的调试或发布模式
我正在做我的学校作业。在调试模式期间,我想打开控制台模式,在发布期间关闭控制台 我尝试了stackoverflow中推荐的marco,但它不起作用。我正在使用visual studio 2012空项目c++运行时如何确定VisualStudioC++中的调试或发布模式,c++,debugging,visual-studio-2012,macros,release,C++,Debugging,Visual Studio 2012,Macros,Release,我正在做我的学校作业。在调试模式期间,我想打开控制台模式,在发布期间关闭控制台 我尝试了stackoverflow中推荐的marco,但它不起作用。我正在使用visual studio 2012空项目c++ #if DEBUG //doing something #else //Release mode doing something #endif 仅当通过编译器选项定义调试时,“如果调试”才起作用 默认情况下,未定义DEBUG,但会定义_DEBUG。如果定义了调试,请尝试,或者通过项目属
#if DEBUG
//doing something
#else
//Release mode doing something
#endif
仅当通过编译器选项定义调试时,“如果调试”才起作用
默认情况下,未定义DEBUG,但会定义_DEBUG。如果定义了调试,请尝试,或者通过项目属性/配置属性/C/C++/预处理器/预处理器定义更改编译器选项以定义调试。如果调试将在编译时而不是在运行时自行解决
NDEBUG是在发布模式中定义的标准宏。
我认为VisualStudio在调试模式下定义了调试宏
在任何情况下,都可以在VisualStudio中定义自己的宏
转到Project->Properties->Configuration Properties->C/C++->Preprocessor->Preprocessor Definitions,您可以在选择的构建配置中为项目添加宏 从您的评论来看,您遇到的问题似乎是打开一个控制台窗口并连接到标准输出,与调试版本和发布版本几乎没有关系 有关如何让GUI程序打开控制台并将stdout指向控制台的工作示例,请参阅MS Support文章:
实际上,在进一步的测试中,使用freopenCONOUT$,w,stdout;也行。由于某种原因,在我最初的测试中,它似乎不起作用。您可能还需要调用setvbuf以避免缓冲问题。对于C,常量调试工作正常,只需确保在项目属性中启用它即可 在解决方案资源管理器中右键单击项目,转到项目属性,然后选择窗口右侧的“生成”选项并选中“定义调试常量”复选框 然后您可以使用这样的代码
#if DEBUG
// debug mode
#else
//release mode
#endif
这是针对Visual studio 2019的:
#ifdef _DEBUG
// do something in a debug build
#else
// do something in a release build
#endif
它怎么不起作用?您是否遇到编译时错误?对于发行版或调试版本,它是否做了相同的事情?什么?不知道为什么。在我的调试中包括的是IFAlloconsole freopenCONOUT$,w,stdout;我没有任何编译时错误。我必须在visual project或其他东西中设置任何属性吗?您好,我已经尝试了defined_DEBUG,但它仍然不起作用。如果definedDEBUG | defined | u debug,请您解释一下有关配置属性的一些细节。我试着把DEBUG放在那里,我能想到的是DEBUG=1;在配置属性下。不确定这样做是否正确it@user2306421当前位置仍然不清楚您的问题在哪里-您是否100%确定是if的问题?尝试在if和else块中输入一个错误,然后查看编译器的输出。@user2306421:if definedDEBUG | defined | DEBUG调试需要一个双栏:if definedDEBUG | | defined | defined | DEBUG感谢MichaelBurr告诉我缓冲区问题。c是从哪里来的?
#ifdef _DEBUG
// do something in a debug build
#else
// do something in a release build
#endif