标签: ndebug

用于(在不同平台上)的NDEBUG预处理器宏是什么?

我对各种平台/编译器("实现")/框架分配给C和C++预处理器宏的目的感兴趣NDEBUG.

Ç以及C++标准只提及这个定义一次,即控制的行为assert()宏.

我会要求只包含特定的答案,您知道C或C++ 的某个平台/框架/库使用该NDEBUG定义来启用或禁用除标准定义的assert()宏之外的任何其他内容.

提出这个问题的一个原因是MS(Visual-C++)总是(?)使用"他们的" _DEBUG定义来区分调试和发布内容,我想知道这是否是图书馆/平台的常见做法"自己的"调试定义或其他库/平台是否NDEBUG用于调试相关的东西.

c c++ cross-platform ndebug c-preprocessor

37
推荐指数
2
解决办法
4万
查看次数

-DNDEBUG通常来自哪里?

我们的构建系统已经以某种方式发生了变化,使得优化的构建不再将-DNDEBUG添加到编译行.我搜索了我们的makefile,却找不到这个.

所以问题是,-DNDEBUG在哪里发源于大多数人以及这可能会如何改变?在我们确实有-DNDEBUG之前,我不认为这是从我们的任何makefile中删除的.

谢谢.

-威廉

c++ makefile ndebug

21
推荐指数
3
解决办法
2万
查看次数

如何在CMake Release模式下启用断言?

CMake用于编译一些C++文件.assert代码中有调用.在CMake的发布模式下禁用这些调用.NDEBUG我猜它在发布模式中定义.

如果我对在CMake的发布模式下断言感兴趣,我该如何启用它?

assert cmake ndebug

13
推荐指数
4
解决办法
9933
查看次数

cmake忽略-D CMAKE_BUILD_TYPE = Debug

我只是想在调试模式下构建一个cmake项目来启用断言.我尝试了以下版本:

cmake -D CMAKE_BUILD_TYPE:STRING=Debug -L ../../
cmake -DCMAKE_BUILD_TYPE:STRING=Debug -L ../../
cmake -DCMAKE_BUILD_TYPE=Debug -L ../../
Run Code Online (Sandbox Code Playgroud)

不幸的是,没有一个具有所需的效果 - CMAKE_BUILD_TYPE设置为Debug(因此NDEBUG-flag不会传递给gcc).

另外,我添加variable_watch(CMAKE_BUILD_TYPE)到我的主要CMakeLists.txt检查值是否被覆盖了某处.但第一个输出是READ_ACCESS在我的主要另外我添加variable_watch(CMAKE_BUILD_TYPE)到我的主要CMakeLists.txt和价值已经存在Release.

有人知道为什么cmake会忽略配置吗?

我正在使用cmake版本2.8.7.

提前感谢您的帮助!

c cmake ndebug

11
推荐指数
1
解决办法
3万
查看次数

如何重写C中的断言宏?

我想创建我自己的版本,assert其中它会打印一些日志,以防在NDEBUG模式下调用断言。

我试图做到这LD_PRELOAD一点并重新定义断言宏,但它似乎完全忽略了宏定义,并且覆盖__assert_fail是无关紧要的,因为在NDEBUG.

我怎样才能覆盖libc assert宏?

我不想创建不同的函数,因为项目中已经大量使用了断言。

c assert ndebug ld-preload

6
推荐指数
1
解决办法
7471
查看次数

标签 统计

ndebug ×5

c ×3

assert ×2

c++ ×2

cmake ×2

c-preprocessor ×1

cross-platform ×1

ld-preload ×1

makefile ×1