Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Từ khóa Generic trong C

Chúng ta biết Macro được dùng trong C hoặc C++, nhưng không có cơ chế kiểm tra kiểu. Macro có thể nhận bất kỳ loại đối số nào. Ví dụ sau sẽ cho thấy trường hợp này rõ ràng.

Ví dụ

#include<stdio.h>
#define INCREMENT(X) ++X

main() {
  int x = 5; float y = 2.56; char z = 'A';
  printf("Integer Increment: %d\n", INCREMENT(x));
  printf("Float Increment: %f\n", INCREMENT(y));
  printf("Character Increment: %c\n", INCREMENT(z));
}

Kết quả

Integer Increment: 6
Float Increment: 3.560000
Character Increment: B

Đó là vấn đề của macro. Trong phiên bản sau của C, chúng ta có thể dùng macro bằng từ khóa '_Generic'. Sử dụng này chúng ta có thể định nghĩa macro với nhiều kiểu dữ liệu khác nhau. Hãy xem một ví dụ.

Ví dụ

#include<stdio.h>
#define INCREMENT(X) _Generic( (X), char: X+10, int: X+1, float: X+2.5, default: 0)

main() {
  int x = 5; float y = 2.56; char z = 'A';
  printf("Integer Increment: %d\n", INCREMENT(x));
  printf("Float Increment: %f\n", INCREMENT(y));
  printf("Character Increment: %c\n", INCREMENT(z));
}

Kết quả

Integer Increment: 6
Float Increment: 5.060000
Character Increment: K