C 전처리기가 있는 선택적 매크로
C에서 선택적 매크로 매개변수는 코드 유연성을 향상시킬 수 있습니다. 이를 구현하는 방법은 오버로딩 스타일 매크로를 사용하는 것입니다. 이 기술이 어떻게 작동하는지 살펴보겠습니다.
한 가지 접근 방식은 매크로 인수 목록을 두 번 활용하는 것입니다. 먼저 도우미 매크로의 이름을 구성합니다. 둘째, 적절한 도우미 매크로에 인수를 전달합니다. 매크로 인수 수를 결정하기 위해 표준 트릭이 사용됩니다.
다음 코드를 고려하십시오.
enum { plain = 0, bold = 1, italic = 2 }; void PrintString(const char* message, int size, int style) { } #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, ) #define PRINT_STRING(...) PRINT_STRING_MACRO_CHOOSER(__VA_ARGS__)(__VA_ARGS__) int main(int argc, char * const argv[]) { PRINT_STRING("Hello, World!"); PRINT_STRING("Hello, World!", 18); PRINT_STRING("Hello, World!", 18, bold); return 0; }
이 접근 방식은 호출자의 매크로 호출을 단순화하는 반면 매크로 작성자에게는 복잡성을 초래할 가능성이 있습니다.
위 내용은 선택적 매크로 매개변수를 C에서 어떻게 구현할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!