ホームページ >バックエンド開発 >C++ >デフォルトパラメータはCの宣言または定義のどこに定義する必要がありますか?

デフォルトパラメータはCの宣言または定義のどこに定義する必要がありますか?

DDD
DDDオリジナル
2024-10-30 01:53:29842ブラウズ

Where should default parameters be defined in C  : declaration or definition?

関数定義のデフォルト パラメーターと宣言

C では、関数をデフォルト パラメーターで宣言でき、すべての引数に値を指定しなくても関数を呼び出すことができます。ただし、デフォルト パラメーターを指定する構文は異なる場合があります。

ケース 1:

<code class="cpp">int Add(int a, int b = 3);
int Add(int a, int b);</code>

ケース 2:

<code class="cpp">int Add(int a, int b);
int Add(int a, int b = 3);</code>

どちらの構文も有効です。ただし、標準的で推奨されるアプローチは ケース 1 で、関数宣言でデフォルトのパラメーターが指定されます。その理由は次のとおりです。

次のシナリオを考えてみましょう:

  • ヘッダー ファイル (lib.h) はいずれかの構文で関数を宣言します。
  • 別の実装ファイル ( lib.cpp) は、デフォルト パラメーターを使用して関数を定義します。
  • 別のソース ファイル (test.cpp) にはヘッダー ファイルが含まれており、デフォルト パラメーターの値を指定せずに関数を呼び出します。

ケース 1:

コンパイラーは、test.cpp のコンパイル中にヘッダー ファイル内のデフォルトのパラメーター宣言を確認します。これにより、デフォルト パラメーターが明示的に指定されなかった場合でも、test.cpp 内の関数の呼び出しが有効であることが保証されます。

ケース 2:

コンパイラーはtest.cpp のコンパイル中にヘッダー ファイル内のデフォルトのパラメーター宣言は表示されません。これは、実装ファイル (lib.cpp) でのみ定義されているためです。デフォルトのパラメータが宣言されていないため、test.cpp でコンパイル エラーが発生します。

したがって、関数宣言 (lib.h) でデフォルトのパラメータを指定するのが、複数の関数間で一貫した動作を保証する標準的な方法です。異なるコンパイル単位。

以上がデフォルトパラメータはCの宣言または定義のどこに定義する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。