宏定义 头文件防卫式声明 auto关键字

一、宏定义
1.单纯的文本替换
例1:
#define a 2+3
cout<<a*a<<endl;//等价于2+3*2+3=5+6=11
输出多少?
例2:
#define s(r) 3.14*r*r
cout<<s(10+5)<<endl;//等价于3.14*10+5*10+5=86.4
输出多少?
2.高级用法:
(1)多行宏定义
(2)set函数与get函数
(3)系统自带宏定义
(4)跨平台
二、头文件防卫式声明
在头文件添加宏定义的判断,即防卫式声明,避免头文件引用时的重复问题。
1.#pragma once 
在有此标识的头文件仅会被编译器包含一次
2.
#ifdef _somefile.h
#define _somefile.h
....//声明、定义语句
#endif
二者区别:
#ifdef:由语法提供支持,针对代码片段注意不能同名宏,编译时间长,可跨平台
#pragma:由编译器提供保证,针对整个文件,编译速度较快,但头文件多次拷贝仍会包含,且无法支持跨平台与版本较旧的编译器
三、Auto关键字
1.auto :变量的自动类型推断,发生在编译期间,不会造成程序运行时效率降低,在声明变量时根据值的类型自动选择变量类型(声明时必须赋初值)
2.作用:在大型工程中遇见特别长的泛型名称时,可以更方便进行编程
3.auto遍历数组
int v[]={1,5,7,10,13,16};
for(auto x:v)
{
cout<<x<<endl;}
或者
for(auto x:{1,5,7,10,13,16})
{ cout<<x<<endl;}
本质:将数组中的每个元素依次拷贝至x中再进行打印,影响效率
因此我们可以使用引用来避免拷贝
int v[]={1,5,7,10,13,16};
for(auto &x:v)
{
 cout<<x<<typeid(x).name()<<endl;//系统函数:typeid().name()可以返回变量,函数,类的数据类型名
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值