【发布时间】:2012-06-02 12:04:04
【问题描述】:
我所有的头文件都使用 include 保护 以及 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 作为可能加速编译并避免名称冲突的选项,同时仍然提供跨编译器的兼容性。
【问题讨论】:
-
我不太懂 C/C++,但this MSDN article 似乎暗示不认识的会被忽略。
标签: c++ c-preprocessor pragma include-guards