_Từ khóa chung trong C dùng để định nghĩa MACRO cho các kiểu dữ liệu khác nhau. Từ khóa mới này đã được thêm vào ngôn ngữ lập trình C trong bản phát hành tiêu chuẩn C11. từ khóa _Generic được sử dụng để giúp lập trình viên sử dụng MACRO theo cách hiệu quả hơn.
từ khóa này dịch MACRO dựa trên loại biến. hãy lấy một ví dụ,
#define dec(x) _Generic((x), long double : decl, \ default : Inc , \ float: incf )(x)
Cú pháp trên là cách khai báo MACRO bất kỳ là chung cho các phương thức khác nhau.
Hãy lấy một mã ví dụ, mã này sẽ xác định MACRO sẽ trả về các giá trị dựa trên kiểu dữ liệu -
Ví dụ
#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; }
Đầu ra
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