1. ホーム
  2. c++

[解決済み] 1つのヘッダーファイルに複数のクラスがある場合と、クラスごとに1つのヘッダーファイルがある場合について

2023-06-05 15:35:06

質問

なぜかうちの会社ではコーディングガイドラインで

Each class shall have it's own header and implementation file.

というクラスを書いたとすると MyString というクラスを書いたとすると、関連する MyStringh.h MyString.cxx .

他にこれを行う人はいますか? その結果、コンパイル性能に影響が出た人はいますか? 10000 ファイルの 5000 クラスは 2500 ファイルの 5000 クラスと同じくらい速くコンパイルされますか? もしそうでなければ、その差は顕著ですか?

[私たちは C++ をコーディングし、日常的に使用するコンパイラーとして GCC 3.4.4 を使用しています]。

どのように解決するのですか?

ここでいう用語とは 翻訳ユニット で、(可能であれば)翻訳ユニットごとに1つのクラス、つまり.cppファイルごとに1つのクラス実装を持ち、対応する同名の.hファイルを持つようにしたいものです。

特にインクリメンタルリンクなどを行う場合は、この方法で行う方が (コンパイル/リンクの観点から) 通常より効率的です。つまり、翻訳単位が分離されているので、1 つの翻訳単位が変更されたときに、多くのものを再構築する必要がありません。

また、多くのエラー/診断がファイル名によって報告されることがわかります ("Error in Myclass.cpp, line 22") そして、ファイルとクラスの間に一対一の対応がある場合、それは助けになります。(または、2 対 1 の対応と呼ぶこともできると思います)。