5

次のように、オブジェクトの周りにヘッダー ガードを配置することに慣れています。

#ifndef SOMETHING_H
#define SOMETHING_H

class Something {
...
}
#endif

しかし、私は彼らも行うコードを与えられています:

#ifndef SOMETHING_H
#include "something.h"
#endif

すべてのインクルード。一応、こちらの方がいいです。なんで?これはオブジェクトの周りの警備員と重複していますか?

4

4 に答える 4

5

その背後にある考え方は、プリプロセッサがヘッダー ファイルを開いて内容を読み取って、そのヘッダーが以前にインクルードされているかどうかを判断する必要がないため、コンパイル中の時間を節約できるということです。ただし、最近のほとんどのコンパイラは、同じファイルの複数のインクルードを検出し、その後の発生を無視するほど十分にスマートです。

于 2013-11-06T00:07:49.787 に答える