关于Pragma】的更多相关文章

1. #pragma once用来防止某个头文件被多次include: #ifndef,#define,#endif用来防止某个宏被多次定义.   2. #pragma once是编译相关,就是说这个编译系统上能用,但在其他编译系统不一定可以,也就是说移植性差,不过现在基本上已经是每个编译器都有这个定义了: #ifndef,#define,#endif这个是C++语言相关,这是C++语言中的宏定义,通过宏定义避免文件多次编译.所以在所有支持C++语言的编译器上都是有效的,如果写的程序要跨平台,最…
#pragma介绍 #pragma是一个预处理指令,pragma的中文意思是『编译指示』.它不是Objective-C中独有的东西(貌似在C/C++中使用比较多),最开始的设计初衷是为了保证代码在不同编译器之间的兼容性,但随着时间推移,它出现在了更多更丰富的应用场景中. #pragma代码是在编译期间处理的:它既不属于注释,也不属于逻辑代码的一部分:并且它和其他预处理命令譬如#ifdef ... #endif不同,它不会影响代码在运行时的逻辑处理,所以#pragma指令丝毫不会影响到程序在运行时…
注意:此文乃是本人阅读多个博客文章后,记下的个人认为重点的地方. 参考文章: 参考1   参考2 #Pragma mark - 用于分离类中的不同功能的方法.(例如,一个 viewController 一般需要这样划分) #pragma mark - life cycle - (void)dealloc { // [super dealloc]; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup aft…
在IAR编译器里用关键字来__interrupt来定义一个中断函数.用#pragma vector来提供中断函数的入口地址. #pragma vector = 0x12    //定时器0溢出中断入口地址__interrupt void time0(void){ ;}上面的入口地址写成#pragma vector=TIMER0_OVF_vect更直观,每种中断的入口地址在头文件里有描述.函数名称time0可以为任意名称.中断函数会自动保护局部变量,但不会保护全局变量.…
这是给编译器用的参数设置,有关结构体字节对齐方式设置, #pragma pack是指定数据在内存中的对齐方式. #pragma pack (n)             作用:C编译器将按照n个字节对齐.#pragma pack ()               作用:取消自定义字节对齐方式. #pragma  pack (push,1)     作用:是指把原来对齐方式设置压栈,并设新的对齐方式设置为一个字节对齐 #pragma pack(pop)            作用:恢复对齐状态 因…
Mattt Thompson撰写. Zihan Xu翻译. 发布于2012年10月1日 #pragma 声明是彰显 Objective-C 工艺的标志之一.虽然 #pragma 最初的目的是为了使得源代码在不同的编译器下兼容的,但精明的Xcode编码器将 #pragma 使用到了极致. 在现在的背景下,#pragma 避开了注释和代码之间的界限.作为预处理指令,#pragma 在编译时进行计算.但它并不像如 #ifdef...#endif 之类的宏,#pragma 的使用方式不会改变你的应用运行…
在所有的预处理指令中,#pragma指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#pragma指令对每个 编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征.依据定义,编译指示是机器或操作系统专有的,且对于每个 编译器都是不同的.其格式一般为:#pragma para,其中para为参数,下面来看一些常用的参数. (Each   implementation   of   C   and   C++   suppor…
最近在看duilib代码,发现头文件既有#pragma once 又有 #ifndefine...#define,忽然就觉得有点不解,因为据我所知这两者都是防止头文件二次包含的. 经过下面两位的解释后,加深了认识: http://www.cnblogs.com/Braveliu/archive/2012/12/29/2838726.html http://blog.csdn.net/zlhy_/article/details/8192580 总结一下: 1.#pragma是微软独有的,不能跨平台…
Pragma Pragma Mark #pragma mark - 是一个在类内部组织代码并且帮助你分组方法实现的好办法. 我们建议使用 #pragma mark - 来分离: 不同功能组的方法 protocols 的实现 对父类方法的重写 - (void)dealloc { /* ... */ } - (instancetype)init { /* ... */ } #pragma mark - View Lifecycle (View 的生命周期) - (void)viewDidLoad {…
① #pragma comment (lib, "libgsl.a") 这是告诉编译器在编译形成的.obj文件和.exe文件中加一条信息,使得 链接器在链接库的时候要去找libgsl.a这个库,不要先去找别的库. 加入这条语句后,就不需要把libgsl.a这个文件额外通过链接器加入到工程里了. #pragma comment( comment-type ,["commentstring"] ) comment-type是一个预定义的标识符,指定注释的类型,应该是co…
>>>layoutSubviews: layoutSubviews是对sbuviews的重新布局,比如,我们想更新子视图的位置,可以通过调用layoutSubviews方法(不能直接调用) layoutSubviews默认不做任何事,用到时,需要在子类中重写 layoutSubviews以下情况会被调用: 直接调用setLayoutSubviews addSubview时 当view的frame发生改变时 滑动UIScrollView时 旋转screen会触发父UIView上的layou…
转自 http://blog.csdn.net/pan_tian/article/details/7675800 这段时间遇到一个问题,程序里明明插入了一条记录,但在后边的一段Procedure中却查不到刚刚插入的记录,最后发现这个Procedure的定义中加入了PRAGMA AUTONOMOUS_TRANSACTION. PRAGMA AUTONOMOUS_TRANSACTION中文翻译过来叫“自治事务”(翻译的还算好理解),对于定义成自治事务的Procedure,实际上相当于一段独立运行的程…
  为了避免同一个文件被include多次 1   #ifndef方式2   #pragma once方式 在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别.    方式一:     #ifndef __SOMEFILE_H__    #define __SOMEFILE_H__    ... ... // 一些声明语句    #endif     方式二:     #pragma once    ... ... // 一些声明语句     #ifndef的…
#pragma pack(n) 重要规则: 1,复杂类型中各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个类型的地址相同: 2,每个成员分别对齐,即每个成员按自己的方式对齐,并最小化长度:规则就是每个成员按其类型的对齐参数(通常是这个类型的大小)和指定对齐参数中较小的一个对齐(对于单个char出现时,必须为2的整数倍,比如n=2时,char 占一位,但是后面有一位空:char [2],直接存储,不空位): 3,结构.联合或者类的数据成员,第一个放在偏移为0的地方:以后每个数据…
原文地址:http://www.cnblogs.com/CBDoctor/archive/2013/01/26/2878201.html 1)#pragma data_seg()一般用于DLL中.也就是说,在DLL中定义一个共享的,有名字的数据段.最关键的是:这个数据段中的全局变量可以被多个进程共享.否则多个进程之间无法共享DLL中的全局变量. 2)共享数据必须初始化,否则微软编译器会把没有初始化的数据放到.BSS段中,从而导致多个进程之间的共享行为失败. 3)你所谓的结果正确是一种错觉.如果你…
为了能够快速定位到代码的目标位置,可以使用#pragma:  …
看到一些零星的知识片,今天就用自己的理解说明下,也是因为太简单了,一下就过的,也是我们日常开发中常用.留下一个脚印,当书不在手上的,也能翻出来看看.说下属性访问器.命名空间和pragma指令. 属性访问器在01.C#数据类型.排序.过滤(一章1.1-1.2)有所提到,在C#3后可以使用修饰符去修饰属性的取值和赋值,也可以使用加入一些验证,如下: class Plant { private double Height = 0.0; //是否需要修剪 public bool canTrim { ge…
1.#include <stdio.h>#if defined(ANDROID20)    #pragma message("Compile Android SDK 2.0...")    #define VERSION "Android 2.0"#elif defined(ANDROID23)    #pragma message("Compile Android SDK 2.3...")    #define VERSION &q…
一般情况下,#pragma message( messagestring )是在编译期间,将一个文字串(messagestring)发送到标准输出窗口.典型的使用方法是在编译时报告和显示信息.下面的代码段是编译期间在标准输出窗口显示一条消息: #if _M_IX86 == 500#pragma message( "Pentium processor build" )#endif messagestring 参数可以将文字串常量扩展成一个宏,从而可以显示任何形式的字符串.例如,下面的语句…
#pragma 的使用 尽管 C 和 C++ 都已经有标准,但是几乎每个编译器 (广义,包含连接器等) 扩展一些 C/C++ 关键字. 合理地应用这些关键字,有时候能使我们的工作非常方便.下面随便说说 Visual C++ 中 #pragma 指示符的使用. 一.用#pragma导出DLL函数     传统的到出 DLL 函数的方法是使用模块定义文件 (.def),Visual C++ 提供了更简洁方便的方法, 那就是“__declspec()”关键字后面跟“dllexport”,告诉连接去要导…
bmp.c:8: warning: malformed '#pragma pack(push[, id], <n>)' - ignored bmp.c:33: warning: #pragma pack (pop) encountered without matching #pragma pack (push, <n>) 这个警告很重要不能忽略,我遇到的这个问题适用于编译器比较老的,因为韦东山自带的虚拟机Ubuntu9.10用的是/work/tools/gcc- 3.4.5 -gl…
#pragma mark - 合成图 - (UIImage *)getShareImageShell:(UIImage *)shareImage { if (shareImage) { CGSize size = CGSizeMake(640, 1084); //      UIGraphicsBeginImageContextWithOptions(outputSize, NO, 0.5);设置透明 质量系数 UIGraphicsBeginImageContext(size); CGConte…
pragma伪指令 通过pragma伪指令告诉编译器如何对待特定的函数.对象或代码段.TMS320C28x C/C++编译器支持如下形式的pragma伪指令: CODE_SECTION(func,“section name”): DATA_SECTION(symbol,“section name”): 注意:func和symbol必须在函数外声明或定义.同时,pragma伪指令也必须在函数外,且位于声明.定义或引用func和symbol之前,否则,编译器会给出警告信息. CODE_SECTION…
原文地址:http://iihero.iteye.com/blog/1189633 PRAGMA语句是SQLITE数据的SQL扩展,是它独有的特性,主要用于修改SQLITE库或者内数据查询的操作.它采用与SELECT.INSERT等语句一样的形式来发出请求,但也有几个重要的不同: 1. 特定的PRAGMA语句可能被移走,新的PRAGMA语句可能在新的版本中添加.因此,后向兼容无法保证. 2. 未知的PRAGMA命令不会有错误消息出现,它只是简单的忽略. 3. 有些PRAGMA只在SQL的编译阶段…
简单的来说就是为了方便查找和导航代码用的.   下面举例如何快速的定位到我已经标识过的代码.     #pragma mark 播放节拍器 - (void) Run:(NSNumber *)tick{ //... } OK,那么如何查找呢,点击代码编辑器上面的导航栏即可:   接着我修改一下代码: #pragma mark - 播放节拍器   猛一看没发现区别是吧?实际上多了一个横线    #pragma mark “-” 播放节拍器   这个短横线(减号)有什么作用呢,再次点击导航栏就可以看到…
Pragma is the HTTP/1.0 implementation and cache-control is the HTTP/1.1 implementation of the same concept. They both are meant to prevent the client from caching the response. Older clients may not support HTTP/1.1 which is why that header is still…
这篇博客的内容都是记的网上的.是流水账.只是记录下来以便日后之有,避免每次重新google. #pragma除了可以用来把不同功能的代码进行分隔组织外还可以用来disable一些warnings.这在引入一些第三方带有warnings的库的时候很有用. #pragma用处:http://nshipster.com/pragma/ #Clang Diagnostics: http://nshipster.com/clang-diagnostics/ Clang warning strings和fl…
采用 #pragma weak name 形式时,指令使 name 成为弱符号.链接程序没有找到 name 的符号定义时,不会显示错误消息,也不会出现符号的多个弱定义的错误消息.链接程序仅执行第一个遇到的定义. 如果另一个编译单元有函数或变量的强定义,那么 name 将链接到它.如果没有 name 的强定义,那么链接程序符号的值为 0. Example1 编译单元A cu1.c #include <stdio.h> extern int foo; #pragma weak foo int ma…
// //  main.m //  14 - #pragma mark的使用 // //  Created by vic fan on 16/7/10. //  Copyright © 2016年 李洪强. All rights reserved. // #import <Foundation/Foundation.h> #pragma mark -----类的声明------ @interface Person : NSObject{ @public //定义实例变量 NSString *_…
编程经常碰到,理解的总不是很透彻,在这里查阅资料总结一下! 在编写程序的时候,我们常用到#pragma指令来设定编译器的状态或者是指示编译器完成一些特定的动作. #pragma once : 这是一个比较常用的指令,只要在头文件的最开始加入这条指令就能够保证头文件被编译一次,避免文件被重复包含. #pragma comment :该 指令的格式: #pragma comment( comment-type [,"commentstring"] )该指令将一个注释记录放入一个对象文件或可…