C++에서 Assert에 메시지 추가

Zeeshan Afridi 2023년10월12일
  1. C++의 어설션
  2. C++에서 Assert의 장점
  3. C++의 Assert에 사용자 지정 메시지 표시
  4. C++의 Assert에서 사용자 지정 메시지 사용자 지정
  5. 결론
C++에서 Assert에 메시지 추가

어설션은 개발자와 테스터가 애플리케이션을 디버그하고 테스트하는 데 도움이 되는 C++의 오류 처리 메커니즘 중 하나입니다.

이것은 부울 표현식 이며, 프로그램의 논리 표현식 테스트를 사용하고 오류가 감지되지 않으면 true를 반환합니다. 그렇지 않으면 프로그램이 종료되고 오류가 표시됩니다.

제대로 실행되거나 종료되기 위해 충족되어야 하는 몇 가지 제약 조건이 있을 때 사용됩니다.

cpp 주장

C++의 어설션

자동차의 속도가 0보다 작아서는 안 되며 빛의 속도보다 빨라야 한다고 가정해 봅시다.

Assert(speed<0 && speed> speed_of_light)
  1. 이 표현식에는 위반해서는 안 되는 두 가지 제약 조건이 있습니다.
  2. 경험에 따르면 프로그래밍의 주장은 프로그램의 버그를 감지하고 수정하는 효과적이고 가장 빠른 방법 중 하나입니다.
  3. 경험에 따르면 프로그래밍하는 동안 주장을 작성하는 것이 버그를 감지하고 수정하는 가장 빠르고 효과적인 방법 중 하나입니다.

어설션은 프로그램에서 조건식을 평가하는 데 사용되는 전처리기 매크로입니다.

Assert(Condition)

    assert(x < 10)

이 표현은 x가 원활하게 실행되기 위해 10보다 작아야 함을 알려줍니다. 그렇지 않으면 프로그램이 종료되고 오류가 발생합니다.

예를 들어, truefalse라는 두 가지 조건부 경로가 있는 프로그램을 실행하고 있습니다. true 경로의 경우 프로그램이 오류 없이 원활하게 실행되고 false 경로의 경우 프로그램이 종료되고 오류가 표시됩니다.

오류는 일반적으로 실패한 조건식, 프로그램 경로 및 오류가 발생한 행 번호로 구성됩니다.

이를 통해 오류 발생을 알 수 있으므로 테스트 및 디버깅을 보다 효율적이고 쉽게 수행할 수 있습니다.

코드 예:

#include <cassert>

int main() {
  int x = 3;
  x = 7;
  assert(x == 3);
  return 0;
}

출력:

Assertion failed: x==3, file E:\Client Project \Codes\assertCodes.cpp,, line 7

C++에서 Assert의 장점

Assertion은 매우 효과적이고 편리한 오류 처리 메커니즘으로 코드의 오류를 여러 가지 방법으로 감지하는 데 도움이 됩니다. 개발 전에 테스트 케이스를 작성한 다음 테스트 케이스에 따라 개발을 시작하는 테스트 주도 방식을 사용했습니다.

유사하게 우리는 프로그램이 오류를 일으키지 않고 통과해야 하는 assert 매크로에 일부 코드를 작성합니다.

테스트 및 디버깅에서 assert를 사용하면 몇 가지 이점이 있습니다.

  1. 주장은 오류 감지에 도움이 됩니다.
  2. 더 나은 관찰성을 제공합니다.
  3. 또한 오류의 원인과 오류 경로를 줄 번호로 식별하는 데 도움이 됩니다.
  4. 사용자 정의 오류 메시지를 추가할 수 있습니다. 다른 테스터와 프로그래머도 오류를 더 인간적으로 이해할 수 있습니다.
  5. 오류 없는 논리 구축에 도움이 됩니다.
  6. 효율적인 테스트 및 디버깅.

C++의 Assert에 사용자 지정 메시지 표시

또한 메서드를 사용하여 assert 매크로에 사용자 정의 메시지를 표시할 수 있습니다. 이는 효과적이고 편리한 옵션입니다. 보다 인간 친화적 인 방식으로 오류를 표시하고 설명했습니다.

소규모 팀은 대규모 소프트웨어 조직에서 소프트웨어의 각 부분에 대해 작업하고 일부는 설계하고 일부는 코딩 및 테스트를 수행합니다. 따라서 사용자 정의 메시지와 함께 assert 매크로를 작성하면 다른 사람이 오류의 특성과 원인을 분석하고 이해하는 데 매우 도움이 될 수 있습니다.

코드 예:

#include <cassert>

int main() {
  int dividend = 4;
  int divisor = 0;
  assert(("Message: Anything divided by 0 is undefined", divisor != 0));
  int divison = dividend / divisor;
  return 0;
}

출력:

Assertion failed: ( "Message: Anything divided by 0 is undefined", divisor != 0), file E:\Client Project \Codes\assertCodes.cpp,, line 6

이 프로그램에서 우리는 4를 0(4/0)으로 나누고 있지만 알다시피 어떤 숫자도 0으로 나눌 수 없으므로 예상대로 오류가 발생합니다. 오류의 가독성을 높이기 위해 사용자 지정 메시지를 추가했습니다.

C++의 Assert에서 사용자 지정 메시지 사용자 지정

#include <cassert>
#include <iostream>
using namespace std;
bool print_if_false(const bool assertion, const char* message) {
  if (!assertion) {
    cout << message << endl;
  }
  return assertion;
}
int main() {
  int dividend = 4;
  int divisor = 0;
  assert(print_if_false(divisor != 0,
                        "Message: Anything divided by 0 is undefined"));
  return 0;
}

출력:

Message: Anything divided by 0 is undefined
Assertion failed: print_if_false(divisor != 0,"Message: Anything divided by 0 is undefined" ), file E:\Client Project \Codes\assertCodes.cpp, line 18

위와 같은 예시이지만 커스터마이징 되어 있습니다. 기능은 전체적으로 동일합니다.

별도의 줄에 메시지를 표시하는 사용자 지정 기능을 만들었습니다.

목적은 가독성을 개선하고 사용자 정의 메시지를 표시하기 위해 assert 매크로를 사용자 정의하는 방법을 아는 것입니다.

결론

이 기사에서 우리는 C++의 assert() 문, 작동 방식 및 assert()의 장점을 이해했습니다. 그 외에도 assert() 구문과 오류의 가독성을 향상시키기 위해 사용자 정의된 메시지를 표시하는 방법을 보았습니다.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn