সংক্ষিপ্ত বিবরণ
`_Generic` হল C11 স্ট্যান্ডার্ডে যোগ করা একটি কীওয়ার্ড যা কম্পাইল-টাইমে টাইপ অনুযায়ী ম্যাক্রো এক্সপ্যানশন করতে দেয়। এটি টাইপ-সেফ জেনেরিক প্রোগ্রামিং সক্ষম করে।
সিনট্যাক্স
_Generic( (expression),
type1: result1,
type2: result2,
default: default_result )
উদাহরণ: টাইপ চেকার ম্যাক্রো
#define typecheck(T) _Generic((T), \
char: 1, \
int: 2, \
long: 3, \
float: 4, \
default: 0)
typecheck('a') → 1
typecheck(10) → 2
typecheck(10L) → 3
typecheck(3.14f) → 4
typecheck("hi") → 0 (default)
ব্যবহার ক্ষেত্র
- টাইপ-সেফ প্রিন্ট ফাংশন (যেমন `printf` র্যাপার)
- জেনেরিক কন্টেইনার/অ্যালগরিদম
- কম্পাইল-টাইম টাইপ ডিসপ্যাচ
সি কোড
#include <stdio.h>
#define typecheck(T) _Generic((T), char:1, int:2, long:3, float:4, default:0)
int main() {
printf("long: %d\n", typecheck(2353463456356465L));
printf("float: %d\n", typecheck(4.32f));
printf("int: %d\n", typecheck(324));
printf("string: %d\n", typecheck("Hello"));
return 0;
}
আউটপুট
long: 3 float: 4 int: 2 string: 0