在 C 中,可以為函數參數指派預設值,允許呼叫者選擇指定其參數。但是,這些預設值的放置可能會導致不同的編譯行為。
範例1:
<code class="cpp">int Add(int a, int b = 3);</code>
範例2:
<code class="cpp">int Add(int a, int b); int Add(int a, int b = 3) { }</code>
標準放置🎜>標準放置🎜>標準放置🎜>標準放置🎜>標準放置🎜>標準放置🎜>標準放置🎜>標準放置🎜>標準放置
標準做法是將預設值定義放置在函數宣告中,如範例2 所示。這保證了預設值可見包含包含該聲明的頭檔的所有編譯單元。編譯差異
當函數宣告和定義分離到不同的來源時,此位置變得特別重要檔案。如果預設值定義放在定義檔中(如範例 1 所示),則它可能對包含僅包含宣告的頭檔的其他編譯單元不可見。 請考慮以下設定:<code class="cpp">// lib.h int Add(int a, int b); // lib.cpp int Add(int a, int b = 3) { ... } // test.cpp #include "lib.h" int main() { Add(4); // Compilation error }</code>編譯 test.cpp 會出錯,因為看不到 lib.cpp 中的預設值聲明。
標準放置的原因
將預設值放在聲明中可確保它對所有編譯單元都可見,從而保證行為一致並防止在上述場景中出現編譯錯誤。以上是為什麼必須在函數宣告中放置預設參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!