"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 코드 사용자 정의를 위해 C++ 매크로에서 선택적 매개변수를 어떻게 구현할 수 있습니까?

코드 사용자 정의를 위해 C++ 매크로에서 선택적 매개변수를 어떻게 구현할 수 있습니까?

2024년 12월 21일에 게시됨
검색:957

How can you implement optional parameters in C   macros for code customization?

C 매크로로 매개변수 사용자 정의

매크로는 C 프로그래밍의 기본 측면으로, 코드 사용자 정의와 유연성을 허용합니다. 일반적인 요구 사항 중 하나는 매크로 내에서 선택적 매개변수를 정의하는 기능입니다.

선택적 매개변수

문자열을 인쇄하는 매크로가 있는 다음 예를 고려해 보세요.

#define PRINT_STRING(message) PrintString(message, 0, 0)

이 매크로는 하나의 필수 매개변수를 허용합니다. 인쇄할 메시지입니다. 보다 다양하게 만들기 위해 문자열 크기와 글꼴 스타일에 대한 선택적 매개변수를 도입할 수 있습니다:

#define PRINT_STRING_1_ARGS(message)              PrintString(message, 0, 0)
#define PRINT_STRING_2_ARGS(message, size)        PrintString(message, size, 0)
#define PRINT_STRING_3_ARGS(message, size, style) PrintString(message, size, style)

매크로 오버로딩

오버로딩을 달성하기 위해 트릭을 사용하여 매크로에 제공된 인수 수입니다. 그런 다음 이 인수 개수를 기반으로 적절한 도우미 매크로를 선택합니다.

#define GET_4TH_ARG(arg1, arg2, arg3, arg4, ...) arg4
#define PRINT_STRING_MACRO_CHOOSER(...) \
    GET_4TH_ARG(__VA_ARGS__, PRINT_STRING_3_ARGS, \
                PRINT_STRING_2_ARGS, PRINT_STRING_1_ARGS, )

사용법

이제 선택적 매개변수와 함께 오버로드된 PRINT_STRING 매크로를 사용할 수 있습니다:

#define PRINT_STRING(...) PRINT_STRING_MACRO_CHOOSER(__VA_ARGS__)(__VA_ARGS__)

예를 들어, 기본 문자열을 인쇄하기 위해 인수 없이 매크로를 호출할 수 있습니다:

PRINT_STRING("Hello, World!");

또는 문자열 크기를 지정합니다.

PRINT_STRING("Hello, World!", 18);

또는 문자열 크기와 글꼴 스타일 모두:

PRINT_STRING("Hello, World!", 18, bold);

이 접근 방식 매크로 호출자의 매개변수 처리를 단순화하여 코드 재사용성과 다양성을 향상시킵니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3