當遇到不明確的語法時,
A a( A() );
有趣的問題出現了:為什麼C標準優先解釋這個作為變數定義的函數宣告?這種與普遍期望的差異引發了關於該標準的立場是否應該與廣泛的程式設計師直覺保持一致的爭論。
為了理解這個選擇,讓我們深入研究被稱為「最令人煩惱的解析」(MVP)的概念。考慮宣告函數的簡單任務:
A foo();
在沒有 MVP 的情況下,此程式碼將被解釋為定義一個名為「foo」的變數。引入新的關鍵字或採用更複雜的函數聲明語法會使語言變得過於複雜。相反,MVP 確保相似語法結構之間的一致性。
在此範例中,明確的聲明
A foo;
定義了一個變量,而
A foo();
聲明了一個函數。透過將此邏輯擴展到稍微複雜的 MVP 情況,我們保持了一致性。它將規則簡化為簡單的「將任何可能類似於聲明的內容解釋為聲明」。這種方法減少了對複雜異常或限定符的需求。
雖然這種解釋可能無法完全闡明 MVP 背後的歷史動機,但它強調了它的實際好處 - 語言語法的一致性和簡單性。這種推理是否符合常見的程式直覺仍然是 C 社群中持續爭論的問題。
以上是為什麼 C 在不明確的語法中優先考慮函數宣告而不是變數定義?的詳細內容。更多資訊請關注PHP中文網其他相關文章!