宏定义的黑魔法 - 宏菜鸟起飞手册宏定义在C系开发中可以说占有举足轻重的作用。底层框架自不必说,为了编译优化和方便,以及跨平台能力,宏被大量使用,可以说底层开发离开define将寸步难行。而在更高层级进行开发时,我们会将更多的重心放在业务逻辑上,似乎对宏的使用和依赖并不多。但是使用宏定义的好处是不言...
分类:
其他好文 时间:
2016-01-15 23:14:30
阅读次数:
757
宏的使用举例#include<stdio.h>#defineregregister#definedo_foreverfor(;;)intmain(){intregn=10;do_forever;return0;}
分类:
编程语言 时间:
2015-12-25 06:29:40
阅读次数:
156
1 #define命令剖析1.1 #define的概念 #define命令是C语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。该命令有两种格式:一种是简单的宏定义,另一种是带参数的宏定义。(1)简单的宏定义:#define 例:#defi....
分类:
编程语言 时间:
2015-11-27 16:41:20
阅读次数:
176
核心提示:1. CR宏 (Containing Record):根据成员指针获取父结构体变量指针2. 0 指针的妙用。在EDKII 的代码中有不少关于CR宏的使用,如 时钟中断处理函数CoreTimerTick。VOID EFIAPI CoreTimerTick ( IN UINT64 Dur...
分类:
其他好文 时间:
2015-10-25 13:30:51
阅读次数:
173
宏定义在C系开发中可以说占有举足轻重的作用。底层框架自不必说,为了编译优化和方便,以及跨平台能力,宏被大量使用,可以说底层开发离开define将寸步难行。而在更高层级进行开发时,我们会将更多的重心放在业务逻辑上,似乎对宏的使用和依赖并不多。但是使用宏定义的好处是不言自明的,在节省工作量的同时,代码可...
分类:
移动开发 时间:
2015-08-21 13:26:35
阅读次数:
327
#include #include "stdlib.h"#define MAX(X,Y)(((X)>(Y))?(X):(Y))#define MAX(X,Y)(((X)<(Y))?(X):(Y))#define SQR(X) (X*X)#define DEBUGint main(){ int ...
分类:
编程语言 时间:
2015-08-13 17:58:34
阅读次数:
128
在项目中看到了likely、unlikely宏的使用, 一直不是很清楚它们的作用,所以就深究下。likely表示被测试的表达式大多数情况下为true, unlikely则表示相反。
两个宏定义:#define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)这两个宏经常在条件转移的...
分类:
其他好文 时间:
2015-06-03 11:55:45
阅读次数:
258
在项目中看到了likely、unlikely宏的使用, 一直不是很清楚它们的作用,所以就深究下。likely表示被测试的表达式大多数情况下为true, unlikely则表示相反。
两个宏定义:#define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)这两个宏经常在条件转移的...
分类:
其他好文 时间:
2015-06-03 11:54:23
阅读次数:
141
WIN32_LEAN_AND_MEAN1. 参考资料:https://msdn.microsoft.com/en-us/library/windows/desktop/aa383745(v=vs.85).aspx2. 使用说明: You can reduce the size of the Wind...
1.宏会在编译器在对源代码进行编译的时候进行简单替换,不会进行任何逻辑检测,即简单代码复制而已。2.宏进行定义时不会考虑参数的类型。3.参数宏的使用会使具有同一作用的代码块在目标文件中存在多个副本,即会增长目标文件的大小。4.参数宏的运行速度会比函数快,因为不需要参数压栈/出栈操作。5.参数宏在定义...
分类:
其他好文 时间:
2015-04-17 17:39:59
阅读次数:
146