#pragma用法】的更多相关文章

这几天忙着去复习了,但是心理总是不踏实,不到实验室里就觉得一天的生活变了个样,现在还是晚上来这里“搞起”吧,白天还是在复习准备考试.因为要开始学习freescale,准备明年的比赛了,觉得是时候开始搞这个了,这几天也看了一下大概的内容,发现程序当中#pragma用的很多,每个程序都有,以前写的代码也有,但是没有总结,现在笔者来总结一下#pragma的用法吧. C 和C++的每个实现对它的主机或操作系统都支持一些独有的特征.例如, 某些程序须对存放数据的存储器区域进行精确的控制,或必须控制特定函数…
#pragma是一种预处理指令,作用是设定编译器的状态或者是指示编译器完成一些特定的动作. 其格式一般为:#pragma Para.其中Para为参数.下面是一些常见用法. 1.message ——在编译信息输出窗口中输出相应信息. 例:#ifdef _X86 #pragma message("_X86 macro activated!") #endif 2.once ——保证头文件只被编译一次 #pragma once与#ifndef / #define / endif 区别: 1)…
想必很多人都看过“头文件中用到的 #ifndef/#define/#endif 来防止该头文件被重复引用”.但是是否能理解“被重复引用”是什么意思?头文件被重复引用了,会产生什么后果?是不是所有的头文件中都要加入#ifndef/#define/#endif 这些代码? 1. 其实“被重复引用”是指一个头文件在同一个cpp文件中被include了多次,这种错误常常是由于include嵌套造成的.如:存在a.h文件#include "c.h"而此时b.cpp文件导入了#include &q…
1. A region of source code where any use of the unqualified name (that is, as a plain identifier) refers to that entityScope regions can be nested, and the same name can be declared within an outer and an inner scope region. enum x { a, b, c}const in…
在看公司公共库的头文件中发现了:#pragma GCC system_header一行,以前没有见过这种用法,在网上查了一下,解释如下: 从#pragma GCC system_header直到文件结束之间的代码会被编译器视为系统头文件之中的代码.系统头文件中的代码往往不能完全遵循C标准, 所以头文件之中的警告信息往往不显示.(除非用 #warning显式指明). 可以查看gcc参考手册:http://gcc.gnu.org/onlinedocs/cpp/System-Headers.html#…
1.#pragmaonce这个宏有什么作用? 为了避免同一个头文件被包含(include)多次,C/C++中有两种宏实现方式:一种是#ifndef方式:另一种是#pragma once方式. 在能够支持这两种方式的编译器上,二者并没有太大的区别.但两者仍然有一些细微的区别. 2.两者的使用方式有何区别? 示例代码如下: 方式一: #ifndef  __SOMEFILE_H__ #define   __SOMEFILE_H__ ... ... // 声明.定义语句 #endif 方式二: #pra…
#pragma once 与 #ifndef 的作用 (1)在C/C++中,在使用预编译指令#include的时候,为了防止重复引用造成二义性. (2)在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别. #pragma once 与 #ifndef 的用法 #pragma once #pragma once #ifndef #ifndef _CODE_BLOCK #define _CODE_BLOCK // code ... #endif // _CODE_…
一个很重要的参数#pragma pack(n) 数据边界对齐方式:以如下结构为例: struct {                    char a;                    WORD b;                    DWORD c;                    char d;                   }在Windows默认结构大小: sizeof(struct) = 4+4+4+4=16;与#pragma pack(4)一样若设为 #prag…
简单的来说就是为了方便查找和导航代码用的. 下面举例如何快速的定位到我已经标识过的代码. #pragma mark 播放节拍器 - (void) Run:(NSNumber *)tick { //... } OK,那么如何查找呢,点击代码编辑器上面的导航栏即可: 接着我修改一下代码: #pragma mark- 播放节拍器 猛一看没发现区别是吧?实际上多了一个横线  #pragma mark “-” 播放节拍器 这个短横线(减号)有什么作用呢,再次点击导航栏就可以看到. 加上-后会显示一条分割线…
强调一点: #pragma pack(4) typedef struct { char buf[3]; word a; }kk; #pragma pack() 对齐的原则是min(sizeof(word ),4)=2,因此是2字节对齐,而不是我们认为的4字节对齐. 这里有三点很重要:1.每个成员分别按自己的方式对齐,并能最小化长度2.复杂类型(如结构)的默认对齐方式是它最长的成员的对齐方式,这样在成员是复杂类型时,可以最小化长度3.对齐后的长度必须是成员中最大的对齐参数的整数倍,这样在处理数组时…