我所有的头文件都使用包含保护和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 */
我想提供一次编译指示作为可能加速编译并避免名称冲突的选项,同时仍然提供跨编译器的兼容性。