1

1.多くの場所、ヘッダーガード、プラグマが特定の順序で一緒に使用されていることがわかります(順序は実際に重要ですか?)

2. また、別の疑問は、VS IDE によって新しいクラス ファイルが生成されるたびに、デフォルトで #pragma once を実装ファイル (.cpp) に配置することです。これは本当に必要ですか?

#ifndef MYHEADER_H
#define MYHEADER_H

#pragma once

//my set of includes

ヘッダーガードまたは複数のインクルードをブロックする正しい方法はどれですか?

4

2 に答える 2

3
#pragma once  

多くの一般的なコンパイラ/プリプロセッサでサポートされていますが、非標準です。#pragma once は安全なインクルード ガードですか?を参照してください。

#ifndef MYHEADER_H
#define MYHEADER_H
#endif // ndef MYHEADER_H

すべての C++ コンパイラ / プリプロセッサで動作することが保証されています。

両方を同時に使用しても意味がありません。

于 2013-02-15T21:31:57.613 に答える
0

「#pragma once」はコンパイラ固有のものであり、移植性がない可能性があります。"#ifndef/#define/#endif" は移植性が高く、すべてのプリプロセッサで機能します。

于 2013-02-15T21:31:42.557 に答える