#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#100intinsert_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 ...
随机推荐
- 基于asp.net MVC 的服务器和客户端的交互(二)之获取Oauth 2.0认证权限
基本Web API的ASP.NET的Oauth2认证 增加Token额外字段 增加Scope授权字段 持久化Token 设计Token的时间间隔 刷新Token后失效老的Token 自定义验证[重启I ...
- AngularJS Boostrap Pagination Sample
首先,样式是这样的 首先,Service端是Webapi REST JSON格式 第二,我们建立一个Wrapper Class,这里你也可以定义一个Generic<T>,作为示例,我们这里 ...
- Java之绘制实例
前面已经介绍过绘制方法. 弧形的绘制: package com.caiduping; import java.awt.Graphics; import javax.swing.JFrame; impo ...
- JAVA TCP网络编程学习笔记
一.JAVA网络编程概述 网络应用程序,就是在已实现网络互联的不同计算机上运行的应用程序,这些程序之间可以相互交换数据.JAVA是优秀的网络编程语言,Java网络编程的类库位于java.net包中.J ...
- 高性能CSS(二)
避免CSS表达式 CSS表达式是动态设置CSS属性的强大(但危险)方法.Internet Explorer从第5个版本开始支持CSS表达式.下面的例子中,使用CSS表达式可以实现隔一个小时切换一次背景 ...
- Js 中的this
关于this This代表"当前"对象 谁调用就代表谁 行内绑定 不带参数 行内绑定 带参数 this 当前对象 Object HTMLInputElement 动态绑定 要获取自 ...
- android.intent.action.MAIN 与 android.intent.category.LAUNCHER 的验证理解
第一种情况:有MAIN,无LAUNCHER,程序列表中无图标 原因:android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里 第二种情况:无MAIN,有LAU ...
- Node.js 【使用npm安装一些包失败之笔记】
镜像使用方法(三种办法任意一种都能解决问题,建议使用第三种,将配置写死,下次用的时候配置还在): 1.通过config命令 npm config set registry https://regist ...
- discuz random函数
在研究邮箱非必填的过程中发现了个比较好用的random函数,在function_core.php中找到声明: function random($length, $numeric = 0) { $see ...
- jquery获得option的值(示例)
jquery获得option的值和对option的操作. jQuery获取Select元素,并选择的Text和Value: 复制代码代码如下: $("#select_id").ch ...