【发布时间】:2011-08-12 05:24:09
【问题描述】:
【问题讨论】:
【问题讨论】:
pragma 是预处理器的指令。它通常用于在编译期间提供一些额外的控制。例如不要包含相同的头文件代码。有很多不同的指令。答案取决于语用词后面的内容。
【讨论】:
它用于替换以下预处理器代码:
#ifndef _MYHEADER_H_
#define _MYHEADER_H_
...
#endif
一个好的约定是同时添加两者以支持旧版编译器(这很少见):
#pragma once
#ifndef _MYHEADER_H_
#define _MYHEADER_H_
...
#endif
因此,如果 #pragma once 失败,旧方法仍然有效。
【讨论】:
通常,#pragma 指令用于实现特定于编译器的预处理器指令。它们没有标准化,因此您不应过度依赖它们。
在这种情况下,#pragma once 的目的是替换您在头文件中使用的包含保护以避免多次包含。它在支持它的编译器上运行得更快一些,因此它可以减少大型项目的编译时间,这些项目有很多 #include'ed 频繁的头文件。
【讨论】: