我知道“便携式”和“宏”这两个词通常不会一起出现,但我的代码通常充满了#ifdef _DEBUG
确认预期结果的标签(我使用 VS2012)。我想让我的代码可移植到 Unix 系统。
根据这篇文章,我的理解是 Visual Studio 使用_DEBUG
和 C 标准使用NDEBUG
,但它们的功能不同(_DEBUG
标志调试模式,NDEBUG
标志断言)。
如果我希望我的代码尽可能可移植,#ifndef NDEBUG
如果我只希望这些代码行在断言处于活动状态时运行,我应该使用吗?这在 Visual Studio 中会产生什么后果?它似乎有效,但我想确保我没有遗漏任何东西;IE。_DEBUG
当有一个非常好的 C 标准替代品时,为什么微软会使用呢?历史原因?