我多次看到pragma
,但总是感到困惑,有人知道它的作用吗?只是窗户吗?
答案 0 :(得分:23)
在C和C ++编程中 语言,#pragma曾经是一个 非标准但广泛支持 预处理器指令旨在 导致当前的源文件 仅包含一次 汇编。因此,#pragma曾经服务过 和#include警卫一样的目的, 但有几个好处, 包括:减少代码,避免名称 冲突,提高编译速度。
有关详细信息,请参阅Wikipedia文章。
答案 1 :(得分:13)
它用于替换以下预处理器代码:
#ifndef _MYHEADER_H_
#define _MYHEADER_H_
...
#endif
一个好的约定是添加两者来支持遗留编译器(这是很少见的):
#pragma once
#ifndef _MYHEADER_H_
#define _MYHEADER_H_
...
#endif
因此,如果#pragma失败,旧方法仍然有效。
答案 2 :(得分:3)
通常,#pragma
指令用于实现特定于编译器的预处理程序指令。它们不是标准化的,所以你不应该过分依赖它们。
在这种情况下,#pragma once
的目的是替换您在头文件中使用的包含保护,以避免多次包含。它在支持它的编译器上工作得快一点,因此它可以减少大型项目的编译时间,这些项目包含很多频繁#include
的头文件。
答案 3 :(得分:0)
pragma是预处理器的指令。它通常用于在编译期间提供一些额外的控制。例如,不要包含相同的头文件代码。有很多不同的指令。答案取决于实用语后面的内容。
答案 4 :(得分:-2)
http://gcc.gnu.org/onlinedocs/cpp/Pragmas.html
- 另外,它是pragma
,而不是pragama
,并且在Stack Overflow上搜索pragma会帮助你
比照Use of #pragma in C 和许多其他人......