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