可能重复:
#pragma - 帮助理解
我看了pragma
很多次,但总是很困惑,有人知道它是做什么的吗?只有窗户吗?
在 C 和 C++ 编程语言中,#pragma once 是一个非标准但广泛支持的预处理器指令,旨在使当前源文件在单个编译中仅包含一次。因此,#pragma 曾经与 #include 保护具有相同的用途,但具有几个优点,包括:更少的代码、避免名称冲突和提高编译速度。
有关更多详细信息,请参阅Wikipedia文章。
它用于替换以下预处理器代码:
#ifndef _MYHEADER_H_
#define _MYHEADER_H_
...
#endif
一个好的约定是添加两者以支持旧版编译器(这很少见):
#pragma once
#ifndef _MYHEADER_H_
#define _MYHEADER_H_
...
#endif
因此,如果 #pragma once 失败,旧方法仍然有效。
通常,这些#pragma
指令旨在实现特定于编译器的预处理器指令。它们不是标准化的,所以你不应该过分依赖它们。
在这种情况下,#pragma once
的目的是替换您在头文件中使用的包含保护以避免多次包含。它在支持它的编译器上工作得更快一些,因此它可以减少大型项目的编译时间,这些项目有很多#include
经常 'ed 的头文件。
pragma 是预处理器的指令。它通常用于在编译期间提供一些额外的控制。例如不要包含相同的头文件代码。有很多不同的指令。答案取决于pragma 词后面的内容。