#ifdef NDEBUG
#define assert(expression) ((void)0)
#else
_ACRTIMP void __cdecl _wassert(
_In_z_ wchar_t const* _Message,
_In_z_ wchar_t const* _File,
_In_ unsigned _Line
);
#define assert(expression) (void)( \
(!!(expression)) || \
(_wassert(_CRT_WIDE(#expression), _CRT_WIDE(__FILE__), (unsigned)(__LINE__)), 0) \
)
#endif
#ifdef NDEBUG
#define assert(expression) ((void)0)
이부분이 이해가 안되는데.. NDEBUG가 정의 되어 있으면
#define assert(expression) ((void)0)
이렇게 된다는 거잔아요.
그럼 assert에 무엇을 넣어도 다 0으로 바뀌는거 아닌가요?
#ifdef NDEBUG 이부분은 직접 assert를 구현해야 하는 부분인가요?
#ifdef NDEBUG 이부분은 직접 assert를 구현해야 하는 부분인가요?
원래 글에 내용 추가했어. assert는 assert.h나 cassert 헤더에 이미 구현되어 있으니까 그냥 인클루드하고 갖다 쓰기만 하면 돼