《C语言深度剖析》学习笔记三
第三章 预处理
注释先于预处理指令被处理,所以无法用宏定义注释
宏定义表达式时,每个参数都加括号,避免不必要的错误
宏定义时: SUM (x) 和SUM(x)不同
使用时: SUM(x) 和SUM (x)一样
#define X 3
#define Y X*2
#undef X
#define X 2
int a = Y;
printf(“%d\n”, a);
结果为4;
结构中数据定义:由小到大
eg.
struct ss{
int I;
short a;
char b;
};
涉及到字节对齐问题
#pragma pack(n) 编译器将按照n个字节对齐
#pragma pack() 编译器将取消自定义字节对齐方式
对齐规则:
按其类型的对齐参数(通常是这个类型的大小)和指定对齐参数中较小的一个对齐。
字节对齐三点:
首先,每个成员分别按自己的方式对齐,并能最小化长度。
其次,复杂类型(如结构)的默认对齐方式是它最长的成员的对齐方式,这样在成员是复杂类型时,可以最小化长度。
然后,对齐吼的长度必须是成员中最大的对齐参数的整数倍,这样在处理数组时可以保证每一项都边界对齐。
#运算符
#define SQR(x) printf(“The ad x is %d\n”, ((x)*(x)));
SQR(8); 输出为The ad x is 64
引号中的字符x被当成普通文本来处理,而不是被当做一个可以被替换的语言符号。
#define SQR(x) printf(“The ad “#x” is %d\n”, ((x)*(x)));
SQR(8);
输出为:
The ad 8 is 64
##运算符 –粘合剂
#define XNAME(n) x##n
XNAME(8) -> x8
转载于:https://blog.51cto.com/aotman/992571
《C语言深度剖析》学习笔记三相关推荐
- c语言深度剖析百度云,《C语言深度剖析》笔记
<C语言深度剖析>笔记 1.在c语言中,凡不加返回值类型限定的函数,就会被编译器作为返 回整形处理. 2.register 变量必须是一个单个的值,并且其长度应小于或等于整型 的长度.而且 ...
- C语言学习笔记(五):《C语言深度剖析》笔记
register变量必须是能被cpu寄存器所接受的类型.此变量必须是一个单个的值,并且其长度应小于或等于整形的长度,而且此变量可能不存放在内存中,所以不能用取址运算符"&" ...
- [学习笔记]C语言深度剖析
近期正在看<C语言深度剖析>,里面有一个讲解自加运算符(++),有一程序如下: void main() {int i;for(i=0, printf("First i = %d\ ...
- C语言深度剖析笔记1
关键字的秘密 数据类型 什么是数据类型? 数据类型可以理解为固定内存大小的别名; 数据类型是创建变量的模子(花形的,圆形的,星形的等等); char 1byte short 2byte int 4by ...
- C语言深度剖析笔记2
接上半部分 C语言深度剖析笔记1 https://blog.csdn.net/halazi100/article/details/125844487 C语言深度剖析笔记1 指针 变量回顾 既然程序中的 ...
- 《Go语言圣经》学习笔记 第三章 基础数据类型
<Go语言圣经>学习笔记 第三章 基础数据类型 目录 整型 浮点数 复数 布尔型 字符串 常量 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记, ...
- Apollo源码剖析学习笔记2
Apollo 源码剖析学习笔记2 Talker-ListenerNode 目录中包含了 Node 对象.Reader 对象和 Writer 对象.Node 对象主要对应 Ros 中的 Node 节点, ...
- 《Go语言圣经》学习笔记 第九章 基于共享变量的并发
<Go语言圣经>学习笔记 第九章 基于共享变量的并发 目录 竞争条件 sync.Mutex互斥锁 syn.RWMutex读写锁 内存同步 syn.Once初始化 竞争条件检测 示例:并发的 ...
- 《Go语言圣经》学习笔记 第八章 Groroutines和Channels
<Go语言圣经>学习笔记 第八章 Groroutines和Channels 目录 Goroutines 实例:并发的Clock服务 实例:并发的Echo服务 Channels 并发的循环 ...
- 《Go语言圣经》学习笔记 第五章函数
<Go语言圣经>学习笔记 第五章 函数 目录 函数声明 递归 多返回值 匿名函数 可变参数 Deferred函数 Panic异常 Recover捕获异常 注:学习<Go语言圣经> ...
最新文章
- 【驱动】uboot环境变量分析
- 潘石屹 python 知乎_如何看待地产大佬潘石屹微博宣布学习python这件事?对我们有什么启发?...
- 关于ansible 创建目录安装redis、nginx
- tp5中mysql使用REGEXP 正则匹配
- python下拉菜单_自定义Django Form中choicefield下拉菜单选取数据库内容实例
- Field+offset(len)
- Github 下载项目的某一分支版本
- PADS2007教程(一)——原理图封装
- 三次Hermite插值解析
- VTK笔记——医学图像等值面提取(Marching Cubes)
- (九)苏世民:我的经验和教训:苏世民成功投资的十五条法则
- MIT 6.824涉及的部分论文翻译
- Matlab中repmat函数使用方法
- Unity 3D 遮挡剔除(仅专业版) Occlusion Culling (Pro only)
- java提出word和pdf等文件的信息
- 【genius_platform软件平台开发】第八十二讲:ARM Neon指令集一(ARM NEON Intrinsics, SIMD运算, 优化心得)
- 苹果XS怎么截屏_可怜的果粉,安卓有这功能快十年之后,苹果发布竟让果粉一片欢呼...
- 利用twitter官网提供的api 及tweepy库 爬取tweets
- PAT练习 星际密码
- 论坛帖子(文章)点赞功能设计