C Macro assert - sonkoni/Koni-Wiki GitHub Wiki

assert.h

assert

์กฐ๊ฑด์ด ๊ฑฐ์ง“(false)์ผ ๋•Œ ํ”„๋กœ๊ทธ๋žจ ์ค‘๋‹จ. ์ฐธ(true)์ด๋ฉด ์ง„ํ–‰.

#ifdef NDEBUG
#define assert(condition) ((void)0)
#else
#define assert(condition) /*implementation defined*/
#endif

// assert(ํ‘œํ˜„์‹)

NDEBUG ๋งคํฌ๋กœ๊ฐ€ ์ •์˜๋˜์–ด ์žˆ์œผ๋ฉด assert ๋Š” ๋ฌด์‹œ๋œ๋‹ค.

ํฌ์ธํ„ฐ๊ฐ€ NULL ์ด๋ฉด ํ”„๋กœ๊ทธ๋žจ ์ค‘๋‹จํ•˜๊ธฐ

#include <stdio.h>
#include <string.h>
#include <assert.h>

void copy(char *dest, char *src) {
    assert(dest != NULL);  // dest ๊ฐ€ NULL ์ด๋ฉด ์ค‘๋‹จ
    assert(src != NULL);   // src ๊ฐ€ NULL ์ด๋ฉด ์ค‘๋‹จ
    strcpy(dest, src);     // ๋ฌธ์ž์—ด ๋ณต์‚ฌ
}

int main(int argc, char *argv[]) {
    char s1[100];
    char *s2 = "Hello, World!!";
    
    copy(s1, s2);  // ์ •์ƒ๋™์ž‘
    copy(NULL, s2); // ์—๋Ÿฌ
    
    return 0;
}

//Assertion failed: (dest != NULL), function copy, file Untitled2.c, line 6.
โš ๏ธ **GitHub.com Fallback** โš ๏ธ