欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

#define, const与inline

程序员文章站 2024-03-23 11:27:40
...

#define、const与inline

在c++中有一组功能相似的关键字:#define、const以及inline,本文旨在阐述三者的区别。

一、#define

#define,也称为宏定义,源于C语言。在程序进入编译器之前,便会被预处理程序处理。如下,程序员编写代码时,可以用PI代替常量3.14,代码在编译之前会被预处理程序进行处理:即用3.14替换PI。因此,编译器的符号表中只含有3.14,而没有PI,给调试程序带来不便。

#define PI 3.14

二、const

  • const是c++中的一个关键字,可用来指定一种语义上的约束,即被const修饰的对象不便被修改。
  • const是通过编译器来实现修饰对象不可被修改的。
  • const既可修饰全局常量,静态对象,也可修饰类内部的静态成员和非静态成员。
  • const与指针
  1. const修饰的是p指向的对象,即a,也就是说可以改变p,但是不能改变p指向的对象。
const int *p=a;//值是常量,不可变
  1. const修饰的是指针,即p,因此p本身不可被修改,但是可以修改p指向的对象。
int * const p=a;//地址是常量,不可变
  1. p及p指向的对象均是常量,都不可变
const int * const p=a;//值和地址都是常量,均不可变

三、inline

  • inline用于声明内联函数。
  • 对于内联函数,编译器编译时会用函数体代码替代内联函数的调用语句
  • 内联函数是建议性的,即inline只能建议编译器使用内联的方式,但是是否采用内联形式则与具体的编译器有关。
  • 内联函数一般用于逻辑简单的函数

总结

  • #define与const用于定义常量,实际使用中建议使用const
  • inline用于函数,只是建议性的,是否使用与具体编译器有关。