関数パラメータのデフォルト値: 標準について
C で関数を宣言する場合、開発者はパラメータのデフォルト値を指定できます。このため、どのアプローチが標準として受け入れられているのか、またその背後にある根本的な理由は何かという疑問が生じます。
デフォルト パラメーターを使用して関数を宣言するには、主に 2 つの方法があります。
1.関数定義内の宣言のみ:
<code class="cpp">int Add(int a, int b); int Add(int a, int b = 3) { }</code>
2.関数ヘッダーの宣言:
<code class="cpp">int Add(int a, int b = 3); int Add(int a, int b) { }</code>
どちらの方法でもコンパイルは成功しますが、標準では関数ヘッダーにデフォルトのパラメーター宣言を配置することが推奨されています。これにより、早期バインディングが保証され、潜在的なコンパイル エラーが防止されます。
具体的には、関数の宣言と定義が異なるファイル (ヘッダー ファイルとソース ファイルなど) に分離されている場合、デフォルトのパラメーター宣言をヘッダーに配置します。重要です。これは、定義内でのみ指定されている場合、ヘッダーを使用するファイルのコンパイル プロセスでデフォルトのパラメーター宣言が参照されないためです。したがって、デフォルトのパラメータを明示的に指定せずに使用しようとすると、コンパイル エラーが発生します。
これを説明するために、次の例を考えてみましょう。
<code class="cpp">// lib.h int Add(int a, int b);</code>
<code class="cpp">// lib.cpp int Add(int a, int b = 3) { ... }</code>
<code class="cpp">// test.cpp #include "lib.h" int main() { Add(4); // Error: default parameter not declared in the header file }</code>
このシナリオでは、デフォルトのパラメーター宣言がヘッダー ファイルに表示されないため、test.cpp のコンパイルは失敗します。
したがって、このようなエラーを回避するための標準的な方法は、関数ヘッダーでデフォルトのパラメーターを宣言することです。 。これにより、コンパイラは初期バインディング プロセス中にデフォルト値を認識し、リンク中のコードのコンパイルが確実に成功するようになります。
以上が関数パラメータのデフォルト値: ヘッダーまたは定義で宣言する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。