在 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中文网其他相关文章!