C++ 関数の規約?
-
26-09-2019 - |
質問
ちょうど大学で「プログラミングの基礎」の講義を受けたところ、関数を使用/宣言するための規則は次のとおりであると言われました。 main()
関数をプログラムの先頭に配置し、その下に関数/プロシージャを配置し、コンパイラ エラーを防ぐために前方宣言を使用します。
ただし、私は常に別の方法で、関数を最上位に配置してきました。 main()
一番下にあり、前方宣言を使用していません。それ以外の場合は見たことがないと思います。
どちらが正しいでしょうか?それとも個人的な好みの問題なのでしょうか?いくつかの説明をいただければ幸いです。
解決
あなたの機能は相互に関連している場合があるかもしれません。あなたは、単に前方宣言せずにmain()
の上にそれらを記述する場合、あなたは、彼らが依存する関数を知っていますので、それらを注文する必要があります。いくつかの場合(循環参照)でも前方に宣言せずにコンパイルすることはできません。
前方の関数を宣言する場合、あなたがこの問題に実行されません。
最初の関数としてmain()
を持ったときにまた、あなたは、より読みやすいコードを生成しますが、thatsのおそらくちょうど個人の好み。
それはまた別のコーダは、彼がファイルに見つける機能についての概要であり、より読みやすい原因である可能性があります。
他のヒント
それはあなた次第です。私はそこに他の機能を持っている時が、それだけで1つまたは2つの他のほとんどの機能やコードスニペットですので、個人的に、私は底にmain
をキープます。
実際のコードでは、あなたがうまくいけば、持っていると思います(ファイルが悪い中で、複数の「無関係」の機能を有する)プロジェクトを分割し、main
ので、おそらくほぼ単独のファイルになります。あなたは物事が起こって物事を取得し、それらを使用する必要性を#include
main
と思います。
は、それが含まれている.hファイル内の関数の宣言を持っているのです。そうすれば、ファイル内の関数の順序が何であるかは重要ではありません。 I宣言のないほとんどない書き込み機能、および他の人が行うとき、それはびっくり私を取ります。
ほとんどのプロの C++ 開発者が使用する標準はこれです。
- クラスごとに 2 つのファイル:ヘッダー ファイル (例: クラス.h), 、クラスのすべてのデータ メンバーと関数のみを宣言します。および実装ファイル (名前は クラス.cpp 同じ例では)、これらの関数の実装のみが含まれています。
- main 関数 (ソリューションにそれがある場合) は、次のような名前のファイルに入ります。 Main.cpp すべてそれ自体で。
家庭や学校の小規模プロジェクトに取り組む場合は、複数のクラスやプログラム全体を 1 つのファイルにまとめても問題ありません。規模が小さいため、クラスや関数の順序はあまり重要ではありません。より都合のよいことを行うことができます。ただし、教授が学生に宿題で特定のコード標準に従うことを要求した場合 (例:main() を最初に置く) 場合は、それらの標準に従う必要があります。
このアプローチは、おそらくあなたの教授と彼女は慣例として、それを教えるの最も可能性の高い理由で好まれています。二つの選択肢がここにありますが、(あなたの教授はあなたが「慣例」フォローしていないと感じているので、すなわちものをマーク取得潜在的に混乱さしようとしていない)の流れで行くか、彼女に説明 - は必須ではありませんそれこの方法(または任意の他の方法)、限り、コードの意図が明確に!があるとして、
アドバイスは、より多くのC ++で暗黙の関数宣言がないので、その後、C ++に、あなたは常に使用する前に宣言しなければならないので、Cに関連している宣言(関数プロトタイプ)を持っています。したがって、あなたは間違いなくあなたが複数の機能を含む再帰を持っている場合の定義ではない少なくとも一つの関数宣言を持つことになります。
あなたが好きなスタイル小さなプロジェクトの使用のためではなく、一貫しています。 大規模なプロジェクトのために、あなたはおそらく、いくつかの.cppファイルを必要とインタフェースは、ヘッダファイルで定義されている(これらのクラスや関数である)必要があります。また、少なくとも一つのファイル内で一貫してます。
そして最後の事は、私は一貫していると言われている?
私は通常、二番目の形式を使用する - 彼らは正しい署名と名前を持っている必要がありますし、あなただけの最初の関数を定義することができるときIMO、彼らはただ、過度入力しています。ノーメンテナンス、ノー無駄な時間ます。
私はここに適用され、「自分を繰り返してはいけない」である原理を考えます。あなたは前方宣言を使用する場合は、不必要に自分自身を繰り返しています。