C 预处理器和C库
来源:互联网 发布:js清除浏览器缓存数据 编辑:程序博客网 时间:2024/06/05 23:33
- 可变参数: stdarg.h
#include<cstdio>#include<cstdarg>//lim传入的值为传入参数的个数double sum(int lim, ...){ va_list ap; //va_list 代表一种数据对象 double tot = 0; va_start(ap, lim); //初始化 ap 为参数列表 for(int i = 0; i < lim; i++){ tot += va_arg(ap, double); //获取参数, 后一个double表示获取参数的类型 } va_end(ap); //清理工作 return tot;}int main(){ double t = sum(5, 1.0, 9.1, 9.6, 4.45, 6.47); printf("%g\n", t); return 0;}
- 诊断库: assert.h
#include<assert>assert(条件判断); //当条件为true继续执行,当条件为false终止运行,输出错误信息//若想禁用assert()宏的机制,可在#include<assert> 之前加上#define NDEBUG
- 通用工具库: stdlib.h
exit(); //退出程序atexit(* function); //传入参数为函数指针,注册该函数,在程序退出时执行该函数,可进行多次调用,符合先进后出
- 内联函数
// 声明内联函数表示的是建议编译器尽可能快速的调用该函数//实现效果可能是函数调用的地方用函数体进行替换inline void eat(){ while(getchar() != '\n') continue;}int main(){ eat();}
可变宏: … 和
__VA_ARGS__
#define PR(...) printf(__VA_ARGS__) //__VA_ARGS__ 用在替换部分,以表明省略号代表的内容PR("Howdy");PR("weight = %d, shipping = %d", wt, sp);
- 预处理器的粘合剂: ##运算符
#define XNAME(N) x##N
XNAME(4) // 得到的结果为x4
int XNAME(1) = 14; //等效为 int x1 = 14; - # 运算符
#define PSQR(x) printf("The square of "#x" is %d\n", ((x) * (x)))
PSQR(6); //输出为 The square of 6 is 36 - \ 使用
printf("That's wond\
erful!\n"); //编译器查找反斜线后紧跟换行符的实例并删除这些实例,将以上两个物理行转换成一个逻辑行
阅读全文
0 0
- c预处理器和c库
- C 预处理器和C库
- C预处理器和C库
- C 预处理器和C库
- C 预处理器和C库
- C预处理器和C库-学习笔记
- 第十六章 C预处理器和C库
- C预处理器和C函数库
- C预处理和宏
- C和C++预处理
- c cprimer plus 第16章 c预处理器和c库
- C学习笔记(十一)C预处理器和C库
- c primer plus第16章总结:C预处理器和C库
- 【C陷阱和缺陷】预处理器
- 【C陷阱和缺陷】预处理器
- C预处理器1
- C预处理器标识
- C语言预处理器
- VS2010的编码经验
- tomcat大量time wait问题
- Spring Data JPA入门
- #bzoj1846
- 破解防拷贝脚本
- C 预处理器和C库
- MyBatis的知识点
- linux查看日志
- 欢迎使用CSDN-markdown编辑器
- pycharm + virtualenv搭建python2.7 和python 3.0的多python运行环境
- 解决Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
- ZOJ-3329 One Person Game(期望dp)
- 深刻理解Python的元类
- Linux iptables防火墙实用模板