应使用哪个预处理器定义来指定代码的调试部分?

使用#ifdef _DEBUG或者#ifndef NDEBUG或者有更好的方法来做到这一点,例如#define MY_DEBUG

我认为_DEBUG是 Visual Studio 特定的,NDEBUG 是标准的吗?

答案

Visual Studio 定义_DEBUG当您指定/MTd或者/MDd选项,NDEBUG禁用标准 C 断言。_DEBUG如果你希望你的调试代码与MS CRT 调试技术NDEBUG如果你想保持一致assert()

如果您定义自己的调试宏(并且不会破解编译器或 C 运行时),请避免以下划线开头的名称,因为它们是保留的。

来自: stackoverflow.com