#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으로 바뀌는거 아닌가요?