#pragma曾经在C中意味着什么?

时间:2011-04-25 09:12:23

标签: c pragma

  

可能重复:
  #pragma - help understanding

我多次看到pragma,但总是感到困惑,有人知道它的作用吗?只是窗户吗?

5 个答案:

答案 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 和许多其他人......