ในไฟล์ต้นฉบับโครงการหนึ่งฉันพบนิยามฟังก์ชัน C นี้:
int (foo) (int *bar)
{
return foo (bar);
}
หมายเหตุ: ไม่มีเครื่องหมายดอกจันติดกับfoo
ดังนั้นจึงไม่ใช่ตัวชี้ฟังก์ชัน หรือมันคืออะไร? เกิดอะไรขึ้นกับการโทรซ้ำ?
a(b);
อะไร ประกาศb
ว่าเป็นตัวแปรชนิดa
หรือไม่? หรือเรียกร้องให้ฟังก์ชั่นที่a
มีข้อโต้แย้งb
? ความแตกต่างคือวากยสัมพันธ์และคุณไม่สามารถรู้วิธีที่จะแยกมันได้โดยไม่ต้องค้นหาข้อมูลการประกาศของa
; นั่นคือการเรียกใช้ฟังก์ชั่น postfix วงเล็บหรือวงเล็บไม่จำเป็นรอบประกาศ