问题
This answer and it's multitude of duplicates indicate that I should be using #include <c*>
for the C headers that I pull from in C++ code, and that I should be calling them with std::*
.
I have been doing that but I notice an exception. std::assert
doesn't seem to be defined, even when I correctly #include <cassert>
.
What's going on here? Is this an implementation oversight, or an actual exception?
回答1:
assert
is a macro, not a function. Hence, it needs to be used with plain old assert(condition)
.
Here's a supporting link: http://en.cppreference.com/w/cpp/error/assert.
回答2:
assert
is a macro, thus it isn't possible to restrict it to a namespace.
来源:https://stackoverflow.com/questions/37124192/what-happened-to-stdassert