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