我想用这种方式禁用C++中的断言宏。
#include <stdio.h> /* printf */
#include <assert.h> /* assert */
#define NDEBUG
void print_number(int* myInt) {
assert (myInt != NULL);
printf ("%d\n", *myInt);
}
int main ()
{
int a = 10;
int * b = NULL;
int * c = NULL;
b = &a;
print_number (b);
print_number (c);
return 0;
}
该 NDEBUG
define控制的定义。assert
宏,而不是它的扩展。 为了使其有效,你需要定义它 之前 宏本身的定义,这发生在 assert.h
.
有两种方法可以实现。
#define NDEBUG
前面那行字 #include <assert.h>
或...;NDEBUG
命令行上,做一些类似的事情。cc -DNDEBUG main.c
也许你也应该退一步考虑 为什么要禁用断言? 毕竟,断言的存在是有原因的,所以除非你运行在40MHz的SPARC工作站上,否则你可能不应该禁用它们。