私のヘッダーファイルはすべてインクルードガードとpragma onceを使用しています:
#pragma once
#ifndef FILE_NAME_H
#define FILE_NAME_H
class foo
{
//foo interface..
};
#endif /* FILE_NAME_H */
pragma onceは標準ではなく、コンパイラ間で同じではない可能性があることは理解していますが、それが原因でエラーが発生する可能性はありますか? 最初に利用可能かどうかを何らかの方法でテストしたほうがよいでしょうか?
#ifdef THIS_COMPILER_SUPPORTS_PRAGMA_ONCE
#pragma once
#endif
#ifndef FILE_NAME_H
#define FILE_NAME_H
class foo
{
//foo interface..
};
#endif /* FILE_NAME_H */
コンパイラ間の互換性を維持しながら、コンパイルを高速化し、名前の衝突を回避するオプションとしてpragma onceを提供したいと考えています。