C++Review21_宏和常量

宏 用于预处理,预处理不是编译,而是编译前对源文件文本的处理,得到真正待编译的文本;

常用的宏:

#define :这个宏一般用于定义一个别名,然后预处理时把别名替换成真正的名称,注意这只是文本层面的替换;

这个宏常用于定义常量;

#define PI 3.1415

#define ERROR_POWEROFF -1

这样其实也起到注释,增强代码可读性的作用;不然对于魔鬼数字-1,没人能知道这代表什么。

#define宏除了可以用来定义常数之外,还可以定义字符串,尤其是路径;

#define宏还可以用于定义表达式

#define SQR(x) x*x

 

条件编译宏:

#ifdef

#else

#endif

这块不作过多介绍了;

 

文件包含:

#include <filename>  //预处理到系统规定的路径中去获得这个文件

#include "filename"    //应该先在当前目录中查找,如果没找到,则按系统指定的路径查找。

 

其他宏以后再讨论;

 

===============================================

常量:

定义常量有两种方法:

C++ 用 const

C语言用 #define

const定义常量有以下好处:

1)const常量有数据类型,宏常量没有数据类型。编译器可以对前者进行类型安全检查,而后者只能进行字符替换。

2)集成化调试工具可以对const常量进行调试,但是不能对宏常量进行调试。

 

#define 定义的常量是全局的。

如果类中要定义常量,应该使用const修饰数据成员。

 

 

但是要注意const数据成员只在某个对象的生存期内是常量,而对于整个类而言是可变的;
类可以创建多个对象,不同对象的const值可不同。
所以不能再类声明中初始化const数据成员。
class A{
const int SIZE = 100; //这是错误的
int array[SIZE]; //也是错误的,SIZE是未知的
}

const数据成员初始化只能在类构造函数的初始化表中进行;

原文链接: https://www.cnblogs.com/grooovvve/p/12382078.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    C++Review21_宏和常量

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/332580

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月1日 下午6:33
下一篇 2023年3月1日 下午6:34

相关推荐