常用关键字:#define,const,typedef,using,inline

  • #define 与 const 的区别

1、起作用阶段

#define 是在预处理阶段,可以用 g++ -E hello.cpp -o hello.i ,去看预编译后的文件,#define 会将源文件中,用define定义的变量全部替换。

const 是在编译链接时候起作用。

2、是否安全

#define 不安去,不会做类型检查,只做文本的简单替换。

const 在定义的时候,就是类型加常量名,会做类型检查,

3、占用内存与开销

#define 在预编译后,将用到地方都展开,多个地方用到的话,会展开多次,占用代码段内存。

const 变量会在常量区,只有一份。之后在用到的地方,编译器都直接给的是地址,省了内存空间。

4、特有功能

#define 特有功能,用来防止文件重复引用。也可以定义函数等。

#ifndef XX_H
#define XX_H

头文件的代码段

#endif
  • #define 与 inline 的区别

1、起作用阶段

define 是在预处理阶段

inline 是在编译链接 阶段,inline 是否起作用由编译器决定。

2、是否安全

inline 函数有类型检查,相比较 宏 是更安全的

3、inline的用法

inline 用法随着C++的修订,越来越多。但对于普通常用的修饰函数,有几点注意

inline 起不起作用由编译器决定,只是起个建议作用,写在函数实现上,写在声明处没有作用。inline定义的全局函数,被另外的文件调用的话,相当于普通的全局函数,不会在调用出被展开。

  • typedef 与 using

这两个关键字都是给数据变量起别名,define 也可以给起别名,但是原理就是字符串替换。

typedef 和 using 的区别在于使用上的区别。

  • typename

泛型编程时候的关键量,在template 后面,用处和class 一样,都是告诉编译器,这是一个类型。

在泛型类中,在声明是类型的时候,也需要在前面加上关键字 typename 告诉编译器这是类型,不是变量。

1、怎么防止头文件多次引用

一般有两种方法,一种是语言层面,一种是编译器曾名

语言层面:

#ifndef XX_H
#define XX_H

头文件内容

#endif

编译器层面

#pragma once

2、extern "C"  的用法

extern "c" 是C++特有的关键字,C不能用。目的是为了了让C 兼容 C++,让C++调用C的代码。

https://blog.csdn.net/sinat_36817189/article/details/110423243

https://blog.csdn.net/qq_24282081/article/details/87530239

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值