Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

คำหลักทั่วไปใน C ?


ดังที่เราทราบดีว่ามีการใช้มาโครใน C หรือ C ++ แต่ไม่มีสิ่งอำนวยความสะดวกในการตรวจสอบประเภท แมโครสามารถใช้อาร์กิวเมนต์ประเภทใดก็ได้ ตัวอย่างต่อไปนี้จะแสดงให้เห็นกรณีนี้อย่างชัดเจน

ตัวอย่าง

#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));
}

ผลลัพธ์

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

นั่นคือปัญหาของมาโคร ในเวอร์ชันที่ใหม่กว่าของ C เราสามารถใช้มาโครโดยใช้คำหลัก '_Generic' เมื่อใช้สิ่งนี้ เราสามารถกำหนดมาโครโดยใช้ประเภทข้อมูลประเภทต่างๆ เรามาดูตัวอย่างกัน

ตัวอย่าง

#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));
}

ผลลัพธ์

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