最近对 newlib 中的启动代码 crt0 产生了兴趣,于是就分析了下其代码。crt0 的源码位于 libgloss/arm/crt0.S,为了兼容各种 ARM 架构,crt0.S 中有大量的条件判断宏定义,对于只关心 ARMv7e-M 的我来说很是痛苦。刚好手上有个基于 STM32F412 的 ...
分类:
其他好文 时间:
2017-05-18 01:26:47
阅读次数:
210
1,防止一个头文件被重复包含 #ifndef BODYDEF_H #define BODYDEF_H //头文件内容 #endif 2,得到指定地址上的一个字节或字 #define MEM_B( x ) ( *( (byte *) (x) ) ) #define MEM_W( x ) ( *( (w ...
分类:
其他好文 时间:
2017-05-17 19:19:41
阅读次数:
215
freemarker写select组件 1、宏定义 <#macro select id datas value="" key="" text="" headKey="" headValue=""> <select id="${id}" name="${id}"> <option> 请选择 </opt ...
分类:
其他好文 时间:
2017-05-14 14:56:39
阅读次数:
81
近期学习Cocos2d-x,看到不少使用do{}while(0)的宏定义,如: #define CC_SAFE_DELETE(p) do { delete (p); (p) = nullptr; } while(0) 这里使用do{}while(0)来确保语句块被运行一次,那么,能不能使用别的语法结 ...
分类:
其他好文 时间:
2017-05-13 18:11:00
阅读次数:
195
预处理语句是由一系列和预处理相关的命令符组成的.预处理语句以#作为起始标记,其后紧跟预处理命令关键字,之后是空格,空格之后是预处理命令的内容.C++提供多种预处理功能,如宏定义,文件包括,条件编译等. #define 在这个教程的开头我们已经提到了一种预处理指令: #define ,可以被用来生成宏 ...
分类:
编程语言 时间:
2017-05-09 21:42:46
阅读次数:
203
预处理指令简介1.为了区分预处理指令和一般的C语句,所有预处理指令都以符号"#"开头,并且结尾不用分号2.C语言提供的预处理指令主要有:宏定义、文件包含、条件编译一、不带参数的宏定义1.一般形式#define宏名字符串比如#defineABC10右边的字符串也可以省略,比如#defineABC2...
分类:
其他好文 时间:
2017-05-09 11:24:20
阅读次数:
230
概念 以“#”号开头的都是预处理命令 宏定义无参数的宏名后不带参数# 表示这是一条预处理命令, define 为宏定义命令。“标识符”为所定义的宏名。“字符串”可以是常数,表达式、格式串等 举例: 作用: 就是用指定标识符PI来代替数3.1415926 对源程序作编译时, 将先由预处理程序进行宏代换 ...
分类:
其他好文 时间:
2017-05-08 23:24:28
阅读次数:
228
(1)首先在函数里定义一具VA_LIST型的变量,作用:指向参数的指针;(2)然后用VA_START宏初始化变量刚定义的VA_LIST变量,初始化后,VA_LIST指针指向可变参数组中第二个参数;(3)然后用VA_ARG返回可变的参数,VA_ARG的第二个参数是你要返回的参数的类型,执行宏定义后,V ...
分类:
其他好文 时间:
2017-05-07 20:04:07
阅读次数:
142
1、 头文件定义例如以下: /* declears in “funcs.h” */ FUNC_1(ID_FUN1_001) FUNC_1(ID_FUN1_002) FUNC_2(ID_FUN2_001) FUNC_2(ID_FUN2_002) 2、 多次包括头文件 #define FUNC_1(op ...
分类:
编程语言 时间:
2017-05-06 20:47:32
阅读次数:
177