C의 _Generic 키워드는 다양한 데이터 유형에 대한 MACRO를 정의하는 데 사용됩니다. 이 새 키워드는 C11 표준 릴리스의 C 프로그래밍 언어에 추가되었습니다. _Generic 키워드는 프로그래머가 MACRO를 보다 효율적으로 사용할 수 있도록 하는 데 사용됩니다.
이 키워드는 변수 유형에 따라 MACRO를 변환합니다. 예를 들어 보겠습니다 ,
#define dec(x) _Generic((x), long double : decl, \ default : Inc , \ float: incf )(x)
위의 구문은 모든 MACRO를 다른 메서드에 대해 일반으로 선언하는 방법입니다.
예제 코드를 살펴보겠습니다. 이 코드는 데이터 유형에 따라 값을 반환하는 MACRO를 정의합니다 -
예시
#include <stdio.h> #define typecheck(T) _Generic( (T), char: 1, int: 2, long: 3, float: 4, default: 0) int main(void) { printf( "passing a long value to the macro, result is %d \n", typecheck(2353463456356465)); printf( "passing a float value to the macro, result is %d \n", typecheck(4.32f)); printf( "passing a int value to the macro, result is %d \n", typecheck(324)); printf( "passing a string value to the macro, result is %d \n", typecheck("Hello")); return 0; }
출력
passing a long value to the macro, result is 3 passing a float value to the macro, result is 4 passing a int value to the macro, result is 2 passing a string value to the macro, result is 0