#pragma预处理指令讲解
在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。
其格式一般为: #pragma Para。其中Para 为参数,下面来看一些常用的参数
message 参数
1
|
#pragmamessage(“消息文本”) |
1
2
3
|
#ifdef_X86 #pragmamessage("_X86macroactivated!") #endif |
code_seg
1
|
#pragmacode_seg(["section-name"[,"section-class"]]) |
#pragma once
#pragma hdrstop
#pragma resource
#pragma warning
1
|
#pragmawarning(disable:450734;once:4385;error:164) |
1
2
3
|
#pragmawarning(disable:450734)//不显示4507和34号警告信息 #pragmawarning(once:4385)//4385号警告信息仅报告一次 #pragmawarning(error:164)//把164号警告信息作为一个错误。 |
1
2
|
#pragmawarning(push[,n]) #pragmawarning(pop) |
1
2
3
|
#pragmawarning(push)保存所有警告信息的现有的警告状态。 #pragmawarning(push,n)保存所有警告信息的现有的警告状态,并且把全局警告等级设定为n。 #pragmawarning(pop)向栈中弹出最后一个警告信息, |
1
2
3
4
5
6
|
#pragmawarning(push) #pragmawarning(disable:4705) #pragmawarning(disable:4706) #pragmawarning(disable:4707) //....... #pragmawarning(pop) |
pragma comment
1
|
pragmacomment(...) |
1
2
|
#pragmaloop_opt(on)//激活 #pragmaloop_opt(off)//终止 |
1
2
3
4
|
#pragmawarn—100//Turnoffthewarningmessageforwarning#100 intinsert_record(REC*r) { /*functionbody*/ } #pragmawarn+100//Turnthewarningmessageforwarning#100backon |
1
2
3
4
5
6
|
#pragmapack(n)和#pragmapop() structsample { chara; doubleb; }; |
1
|
#pragmacomment(comment-type,["commentstring"]) |
1
|
/DEFAULTLIB,/EXPORT,/INCLUDE,/MANIFESTDEPENDENCY,/MERGE,/SECTION |
#pragma disable
#pragma data_seg
1
2
3
|
#pragmadata_seg("shareddata") HWNDsharedwnd=NULL; //共享数据 #pragmadata_seg() |
1
2
3
4
5
6
7
8
9
10
11
12
|
#pragmadata_seg("MyData") intg_Value; //Notethattheglobalisnotinitialized. #pragmadata_seg() //DLL提供两个接口函数: intGetValue() { returng_Value; } voidSetValue(intn) { g_Value=n; } |
后启动两个进程A和B,A和B都调用了这个DLL,假如A调用了SetValue(5); B接着调用int m = GetValue();
那么m的值不一定是5,而是一个未定义的值。因为DLL中的全局数据对于每一个调用它的进程而言,是私有的,不能共享的。假如你对g_Value进行了初
始化,那么g_Value就一定会被放进MyData段中。换句话说,如果A调用了SetValue(5); B接着调用int m =
GetValue(); 那么m的值就一定是5,这就实现了跨进程之间的数据通信。
#pragma预处理指令讲解的更多相关文章
- #pragma 预处理指令详解
源地址:http://blog.csdn.net/jx_kingwei/article/details/367312 #pragma 预处理指令详解 在所有的预处理指令中, ...
- pragma comment的使用 pragma预处理指令详解
pragma comment的使用 pragma预处理指令详解 #pragma comment( comment-type [,"commentstring"] ) 该宏放置一 ...
- C++中的#pragma 预处理指令详解
源地址:http://blog.csdn.net/roger_77/article/details/660311 在所有的预处理指令中,#pragma 指令可能是最复杂的了,它的作用是设定编译器的状态 ...
- #pragma 预处理指令
Linux C 编程一站式学习 #pragma 预处理指示供编译器实现一些非标准的特性,C 标准没有规定 #pragma 后面应该写什么以及起什么作用,由编译器自己规定.有的编译器用 #pragma ...
- C++ #pragma 预处理指令
#pragma 预编译指令的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征 ...
- C/C++预处理指令
预处理指令 Preprocessor Directives define undef ifdef ifndef if endif else and elif line error include 预定 ...
- 预处理指令#pragma
#pragma介绍 #pragma是一个预处理指令,pragma的中文意思是『编译指示』.它不是Objective-C中独有的东西(貌似在C/C++中使用比较多),最开始的设计初衷是为了保证代码在不同 ...
- 预处理指令中#Pragma
在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的 ...
- C#中的预处理指令详解
这篇文章主要介绍了C#中的预处理指令详解,本文讲解了#define 和 #undef.#if.#elif.#else和#endif.#warning和#error.#region和#endregion ...
随机推荐
- C# @符号的多种使用方法
1.限定字符串用 @ 符号加在字符串前面表示其中的转义字符“不”被处理.如果我们写一个文件的路径,例如"D:/文本文件"路径下的text.txt文件,不加@符号的话写法如下:str ...
- c#索引器的简单用法
abstract class Bird { protected string name; public abstract string Name { get; set; } public abstra ...
- 【原】GO 语言常见错误
1. Scan error on column index 4: converting string "" to a int: strconv.ParseInt: parsing ...
- Sicily 1068欢迎提出优化方案
1608. Digit Counting 限制条件 时间限制: 1 秒, 内存限制: 32 兆 题目描述 Trung is bored with his mathematics homeworks. ...
- mac 上的版本控制工具SmartSVN9.0.4(破解版)
附带上破解版安装说明: 1.在MAC上选中SmartSVN.dmg,右键->打开2.双击syntevo_keygen.jar 如果没有安装java会自动提示安装的3.输入Name Email(随 ...
- MYSQL数据库主主同步实战
MYSQL支持单向.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护日志文件的一个索引以跟踪日志循环.当一个从服务器连接到主服务 ...
- Node.js之【正则表达式函数之match、test、exec、search、split、replace使用详解】
1. Match函数 使用指定的正则表达式函数对字符串惊醒查找,并以数组形式返回符合要求的字符串 原型:stringObj.match(regExp) 参数: stringObj 必选项,需要去进行匹 ...
- JavaScript笔记(一)
JavaScript组成 EcmaScript:核心部分 作为解释器.几乎没有兼容性问题 DOM:Document Object Model,操作HTML页面的入口.有些操作不兼容. BOM:Brow ...
- PHP5 GD库生成图形验证码(汉字)
PHP5 GD库生成图形验证码且带有汉字的实例分享. 1,利用GD库函数生成图片,并在图片上写指定字符imagecreatetruecolor 新建一个真彩色图像imagecolorallocate ...
- 关于HTML代码的转义
笔记: 1.在通过jsonp方式传输HTML代码的时候,为了防止代码中的一些字符影响json的语法,需要对HTML代码进行转义. 2.转义的时候可以只转义特殊字符(引号之类的),也可以把所有字符(中文 ...