Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어에서 단순 어서션(Simple Assertion)이란 무엇인가?

어서션(assertion)은 해당 코드 라인에 도달했을 때 특정 사실이 반드시 참(true)이어야 한다는 것을 명확하게 선언하는 문장입니다. 프로그램 실행 중 기대하는 조건이 충족되었는지 확인하는 데 유용하게 사용됩니다.

단순 어서션(Simple Assertion)의 개념

단순 어서션은 assert.h 헤더 파일에 포함된 assert(expression) 함수를 통해 구현할 수 있습니다.

기본 문법은 다음과 같습니다.

assert(expression)

단순 어서션의 동작 방식

  • 어서션에 전달된 조건이 참일 경우, 아무런 동작도 수행하지 않고 프로그램은 정상적으로 계속 실행됩니다.
  • 조건이 거짓(false)일 경우의 동작은 컴파일러 플래그 설정에 따라 완전히 달라집니다.
  • 어서션이 활성화되어 있을 때 조건이 거짓으로 평가되면, 프로그램은 즉시 중단(abort)됩니다.
  • 어서션이 비활성화되어 있을 경우(NDEBUG 매크로 정의 시), 아무 동작도 수행하지 않습니다.

어서션은 오직 내부적인 프로그래밍 오류를 잡아내는 용도로만 사용해야 합니다. 이러한 오류는 주로 잘못된 매개변수가 전달될 때 발생합니다. 즉, 사용자 입력 검증보다는 개발자가 코드의 논리적 가정을 확인하기 위한 도구로 활용하는 것이 바람직합니다.

예제 코드

다음은 C 언어에서 단순 어서션을 사용하는 예제 프로그램입니다.

#include <stdio.h>
#include <assert.h>
int main(void){
    int x;
    printf("Enter the value of x:\n");
    scanf("%d",&x);
    assert(x >= 0);
    printf("x = %d\n", x);
    return 0;
}

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

Run 1:
Enter the value of x:
20
x = 20
Run 2:
Enter the value of x:
-3
Assertion failed!
Program: G:\CP\CP programs\test.exe
File: G:\CP\CP programs\test.c, Line 10
Expression: x >= 0

첫 번째 실행에서는 입력값 20이 조건 x >= 0을 만족하므로 프로그램이 정상적으로 종료됩니다. 반면 두 번째 실행에서는 음수 -3이 입력되어 어서션 조건이 거짓이 되고, 실패한 표현식과 파일명, 라인 번호를 포함한 오류 메시지와 함께 프로그램이 중단되는 것을 확인할 수 있습니다.