第三章 预处理

注释先于预处理指令被处理,所以无法用宏定义注释

宏定义表达式时,每个参数都加括号,避免不必要的错误

宏定义时: 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语言深度剖析》学习笔记三相关推荐

  1. c语言深度剖析百度云,《C语言深度剖析》笔记

    <C语言深度剖析>笔记 1.在c语言中,凡不加返回值类型限定的函数,就会被编译器作为返 回整形处理. 2.register 变量必须是一个单个的值,并且其长度应小于或等于整型 的长度.而且 ...

  2. C语言学习笔记(五):《C语言深度剖析》笔记

    register变量必须是能被cpu寄存器所接受的类型.此变量必须是一个单个的值,并且其长度应小于或等于整形的长度,而且此变量可能不存放在内存中,所以不能用取址运算符"&" ...

  3. [学习笔记]C语言深度剖析

    近期正在看<C语言深度剖析>,里面有一个讲解自加运算符(++),有一程序如下: void main() {int i;for(i=0, printf("First i = %d\ ...

  4. C语言深度剖析笔记1

    关键字的秘密 数据类型 什么是数据类型? 数据类型可以理解为固定内存大小的别名; 数据类型是创建变量的模子(花形的,圆形的,星形的等等); char 1byte short 2byte int 4by ...

  5. C语言深度剖析笔记2

    接上半部分 C语言深度剖析笔记1 https://blog.csdn.net/halazi100/article/details/125844487 C语言深度剖析笔记1 指针 变量回顾 既然程序中的 ...

  6. 《Go语言圣经》学习笔记 第三章 基础数据类型

    <Go语言圣经>学习笔记 第三章 基础数据类型 目录 整型 浮点数 复数 布尔型 字符串 常量 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记, ...

  7. Apollo源码剖析学习笔记2

    Apollo 源码剖析学习笔记2 Talker-ListenerNode 目录中包含了 Node 对象.Reader 对象和 Writer 对象.Node 对象主要对应 Ros 中的 Node 节点, ...

  8. 《Go语言圣经》学习笔记 第九章 基于共享变量的并发

    <Go语言圣经>学习笔记 第九章 基于共享变量的并发 目录 竞争条件 sync.Mutex互斥锁 syn.RWMutex读写锁 内存同步 syn.Once初始化 竞争条件检测 示例:并发的 ...

  9. 《Go语言圣经》学习笔记 第八章 Groroutines和Channels

    <Go语言圣经>学习笔记 第八章 Groroutines和Channels 目录 Goroutines 实例:并发的Clock服务 实例:并发的Echo服务 Channels 并发的循环 ...

  10. 《Go语言圣经》学习笔记 第五章函数

    <Go语言圣经>学习笔记 第五章 函数 目录 函数声明 递归 多返回值 匿名函数 可变参数 Deferred函数 Panic异常 Recover捕获异常 注:学习<Go语言圣经> ...

最新文章

  1. 【驱动】uboot环境变量分析
  2. 潘石屹 python 知乎_如何看待地产大佬潘石屹微博宣布学习python这件事?对我们有什么启发?...
  3. 关于ansible 创建目录安装redis、nginx
  4. tp5中mysql使用REGEXP 正则匹配
  5. python下拉菜单_自定义Django Form中choicefield下拉菜单选取数据库内容实例
  6. Field+offset(len)
  7. Github 下载项目的某一分支版本
  8. PADS2007教程(一)——原理图封装
  9. 三次Hermite插值解析
  10. VTK笔记——医学图像等值面提取(Marching Cubes)
  11. (九)苏世民:我的经验和教训:苏世民成功投资的十五条法则
  12. MIT 6.824涉及的部分论文翻译
  13. Matlab中repmat函数使用方法
  14. Unity 3D 遮挡剔除(仅专业版) Occlusion Culling (Pro only)
  15. java提出word和pdf等文件的信息
  16. 【genius_platform软件平台开发】第八十二讲:ARM Neon指令集一(ARM NEON Intrinsics, SIMD运算, 优化心得)
  17. 苹果XS怎么截屏_可怜的果粉,安卓有这功能快十年之后,苹果发布竟让果粉一片欢呼...
  18. 利用twitter官网提供的api 及tweepy库 爬取tweets
  19. PAT练习 星际密码
  20. 论坛帖子(文章)点赞功能设计

热门文章

  1. CRC冗余校验举例和原理
  2. Linux进程间通信方式--本地socket
  3. epoll非阻塞IO
  4. 原始socket例子
  5. static in c language
  6. [BZOJ2125]最短路
  7. BZOJ.1007.[HNOI2008]水平可见直线(凸壳 单调栈)
  8. python ==字符串
  9. 反转一个值中的最后n位
  10. boost常用库案例