std :: assert发生了什么

Jon*_*Mee 8 c c++ assert namespaces std

这个答案和它的大量重复表明我应该使用#include <c*>C++代码中的C头,并且我应该用它来调用它们std::*.

我一直这样做,但我注意到一个例外.std::assert似乎没有定义,即使我正确#include <cassert>.

这里发生了什么?这是一个实施疏忽,还是一个实际的例外?

R S*_*ahu 15

assert是一个宏,而不是一个函数.因此,它需要与普通的旧版本一起使用assert(condition).

这是一个支持链接:http://en.cppreference.com/w/cpp/error/assert.

  • 供参考:C ++ 17标准在第20.5.1.2章第5段(“ [headers]”)中列出了这一点:“在C中定义为宏的名称应在C ++标准库[..中定义为宏。 。]“ (2认同)

Mat*_*lia 11

assert 是一个宏,因此无法将其限制为命名空间.