#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 ...
随机推荐
- ZipArchive 的使用
新建一个项目,首先添加 System.IO.Compression.FileSystem 引用. 解压文件 using System.IO.Compression; namespace cl { st ...
- JavaScript---Cookie
用JavaScript创建.获取.删除Cookie的例子 1.创建cookie function setCookies(cName,cValue,exTimes){ var d = new Date( ...
- jQuery 日历控件 FullCalendar 初识
最近有个日程管理的需求,就学习了一下 FullCalendar 控件的一些基本知识,本文不是详细介绍该控件的 API 的文档,而是记录本人使用过程中的一些学习情况. 先看一下效果图 月/周/日视图 ...
- 利用AVL树实现搬箱问题的best fit策略
//my.h //定义两个数据类型,货物Goods,箱子Box #include <vector> #include <cstddef> #include <iostre ...
- Poj OpenJudge 百练 2632 Crashing Robots
1.Link: http://poj.org/problem?id=2632 http://bailian.openjudge.cn/practice/2632/ 2.Content: Crashin ...
- [java学习笔记]java语言核心----面向对象之构造函数
1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用: 给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...
- javascript多线程简介
讲多线程之前,我们先了解一下JS的事件机制 浏览器运行时,脚本必须定期让位给UI进程进行来维持网页的响应,闲置太长时间的脚本可能会被浏览器当成失控脚本,进而造成假死或弹窗 事件触发的设计javascr ...
- DTCMS自定义标签:面包屑导航,栏目中通过栏目调用名称获得栏目名称
DTcms.Web.UI\Label\category.cs中增加标签 /// <summary> /// 自定义:通过类别name获得类别title /// </summary&g ...
- php计算时间差的方法
一个简单的例子:计算借书的天数,根据每天的日期进行计算. (1) 有数据库的情况 MSSQL可以使用触发器!用专门计算日期差的函数datediff()便可. MYSQL那就用两个日期字 ...
- delphi 自带报告内存泄漏
//报告内存泄漏 ReportMemoryLeaksOnShutdown := true;