#pragma 的几种用法

原创 2007年09月15日 17:47:00


预编译指令#pragma有很多种用法,我敢保证很多程序员即使是一辈子也不会碰到其中的有些用法,是

的,他们的确很偏僻,我们也没有用他们的需求。所以,本文不会面面俱到,只是把几种常用的几种汇总

了一下。

1. #pragma once
保证头文件只被include一次,等同于
#ifndef _X_H
#define _X_H
...
#endif //_X_H

2.#pragma comment
原形是#pragma comment( "comment-type" [, commentstring] ),把comment recode放入目标文件或可

执行文件。"comment-type"有五种,其中lib比较常用:#pragma comment(lib,"d3d9x") 在连接时就会把

d3d9x.lib报含到项目中来。其实在IDE中也可以手动的设置把lib文件包含进来。

3.#pragma warning
可以对编译的warning做一些处理.
比如当把float 转成 int时会有一个warning.看到warning总归不爽,而且有些warning心知肚明,肯定不

会引起什么问题,这时候:
#pragma warning(disable:4244)
可以把该警告屏蔽掉.#pragma warning的作用域是本文件,如果是头文件,则会影响到包含它的模块,确保

你的使用不会影响到别人.所以最好及时地恢复warning
#pragma warning( push )
#pragma warning( disable : 4705 )
#pragma warning( disable : 4706 )
// Some code
#pragma warning( pop )
也可以
#pragma warning( disable : 4705 )
#pragma warning( disable : 4706 )
// Some code
#pragma warning( default:  4705 )
#pragma warning( default:  4705 )


4.#pragma pack
c/c++的class,struct,union默认情况下会在字,双字,四字边界对齐.有时候需要按我们的方式进行对齐,

比如让网络包更紧蹙些.
#pragma pack(push,1)
 struct A{                                     //现在sizeof(A) 等于5;默认情况下是8;
 int i;
 char c;
};
#pragma pack(pop)  使用时跟warning一样,也要注意作用域问题。记得以前有位仁兄在头文件中改了对

齐方式,没有及时地设回去。这种bug很讨厌,会间歇性地莫名其妙地引起程序崩溃,千万要小心。 

相关文章推荐

#pragma 预处理指令详解

#pragma  预处理指令详解              在所有的预处理指令中,#pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令...

DSP编程技巧之:不得不看的编译指示_#pragma

编译指示(Pragma Directives)可能是所有的预处理指令中最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对编译器给出了如何处理特定的函数、对象...

#Pragma 指令

在所有的预处理指令中,#Pragma  指令可能是最复杂的了,他的作用是设定编译器的状态或是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持和C和C++语言完全兼容的...

重要的#pragma声明

最近在做CCP标定的底层的相关工作,涉及到对多组变量指定内存区块的应用。转载了这篇文章来学习#pragma的使用。   原文出处:龙丘推荐必读基础知识: 重要的#pragma声明 http://www...
  • wzj983
  • wzj983
  • 2017年04月29日 17:11
  • 338

c++中#pragma的用法

c++中#pragma的用法 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方...

#pragma指令用法汇总和解析

#pragma指令用法汇总和解析 一. message 参数。 message 它能够在编译信息输出窗  口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为:  #pragma me...

#pragma使用

尽管 C 和 C++ 都已经有标准,但是几乎每个编译器 (广义,包含连接器等) 扩展一些 C/C++ 关键字。合理地应用这些关键字,有时候能使我们的工作非常方便。下面随便说说 Visual C++ 中...
  • cnsword
  • cnsword
  • 2007年12月17日 17:13
  • 1711

使用librtmp进行H264与AAC直播

libx264 版本是 128 libfaac 版本是 1.28 1、帧的划分 1.1 H.264 帧 对于 H.264 而言每帧的界定符为 00 00 00 01 或者 00 00 01。 比如...

将h.264裸码流推送到RTMP服务器

h.264裸码流的格式,参考“H.264-AVC-ISO_IEC_14496-10.pdf, page 211.”,这个文档的下载地址:https://github.com/winlinvip/sim...
  • wishfly
  • wishfly
  • 2017年01月21日 16:03
  • 970

C语言_#pragma用法详解

  • 2014年04月08日 20:40
  • 23KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:#pragma 的几种用法
举报原因:
原因补充:

(最多只允许输入30个字)