#ifndef __GNUC__ สำลักฉัน
คำถามนี้อาจจะแปลกโดยสิ้นเชิงฉันกำลังดำเนินการกับรหัสเก่าบางส่วน (ไม่ใช่จากฉัน) จริงๆแล้วฉันไม่ใช่โปรแกรมเมอร์ C แต่ฉันพยายามทำความเข้าใจว่าส่วนนี้ของโค้ดควรจะทำอย่างไร โชคดีที่ส่วนที่แปลกไม่นาน (เป็นส่วนหนึ่งของการกำหนดค่า):
int
main ()
{
#ifndef __GNUC__
choke me
#endif
;
return 0;
}
ถ้าไม่ใช่คอมไพเลอร์ GNU แล้ว"choke me"... นี่มันchoke meหมายความว่ายังไง ... ฉันไม่เข้าใจจริงๆ (และเจอ แต่ของแปลก ๆ ในขณะที่กูเกิลทำให้หายใจไม่ออก -.-)
คำตอบ
มันควรจะเป็นสิ่งที่ไม่ถูกต้อง C และจะทำให้เกิดข้อผิดพลาดทางไวยากรณ์ทำให้ไม่สามารถรวบรวมไฟล์ได้
สันนิษฐานว่าโปรแกรมเมอร์ไม่ได้ตั้งใจให้โค้ดทำงานกับคอมไพเลอร์ใด ๆ ยกเว้น GNU C (gcc) ดังนั้นสิ่งนี้จะบังคับให้บิวด์ล้มเหลวหากมีการใช้คอมไพเลอร์อื่น ไม่มีความสำคัญเป็นพิเศษสำหรับคำที่เลือกยกเว้นว่า "ทำให้หายใจไม่ออก" น่าจะหมายถึง "นี่คือสิ่งที่คอมไพเลอร์ไม่สามารถ" กลืน "และจะฆ่ามันได้"
#errorวิธีการที่ทันสมัยมากขึ้นที่จะใช้
มันเป็นคำสั่งที่ไม่ถูกต้องดังนั้นจะทำให้เกิดข้อผิดพลาด