C预处理器和C库-学习笔记

C预处理器和C库 学习笔记


1.常量: #define
只进行替换不进行计算

#define SQRT(X) X*X
SQRT(a+2);

直接替换为: a+2*a+2,和预期不同,可以通过加括号来达到预期结果

#define SQER(X) (X)*(X)

2. 利用宏参数创建字符串: #运算符
在类函数宏的替换部分中,#符号用做一个预处理运算符,可以把语言符号转换为字符串,例如,如果x是一个宏参量,那么 #x 可以把参数名转换为对应的字符串,该过程称为字符串化(stringizing)
#define PSQR(x) printf("The square of " #x " is %d.\n",((x)*(x)))
PSQR(2+4)
输出 The square of 2+4 is 36.

3.预处理器的粘合剂: ## 运算符
#define XNMAE(n) x##n

XNMAE(4); // 替换为 x4.
在MFC框架中常使用“##”来粘合

4.可变宏: ...和__VA_ARGS__
#define PR(...) printf(__VA_ARGS__)

PR("Howdy");
PR("weight = %d, shipping = $%.2f\n", wt, sp);


第一次调用__VA_ARGS__展开为一个参数
“Howdy”

相当于

printf("Howdy");

第二次调用__VA_ARGS__展开为三个参数

"weight = %d, shipping = $%.2f\n", wt, sp

相当于

printf("weight = %d, shipping = $%.2f\n", wt, sp);

5.文件包含: #include

6.#undef 取消一个给定的#define

7.条件编译
#ifdef #else #endif
#ifndef
#if #elif

8.一些预定义宏
__DATE__ __FILE__ __LINE__ __STDC__ __STDC_HOSTED__ __TIME__ __STDC_VERSION__

#line 用于重置由__LINE__, __FILE__宏报告的行号和文件名
#line 1000
#line 10 "cool.c"

9.#error使预处理器发出一条错误信息

10.#progma
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值