当前位置:首页 > 工业控制 > 电子设计自动化
[导读]在C++中,要定义一个常量,有两种主要的做法 1. 符号常量 (#define) 2. 常值变量 (const) 符号常量的定义方式,其实与C++本身没有关系,它是一个编译器指令,或者称为预处理指令(有关的预处理指令还有#include,#i

在C++中,要定义一个常量,有两种主要的做法

1. 符号常量 (#define)

2. 常值变量 (const)

符号常量的定义方式,其实与C++本身没有关系,它是一个编译器指令,或者称为预处理指令(有关的预处理指令还有#include,#ifdefine等等)。它的用法如下

#define PI 3.1415926

这样的语法就定义了一个叫做PI的符号常量,它的值指定为3.1415926.

【注意】因为它其实不是C++语法,所以它不需要(也不能)用分号结束。

我们怎么使用呢


与符号常量相对的,常值变量需要通过const关键字定义。相对来说,const更加现代,它是c++的一个关键字,它的用法如下

const double PI=3.1415926;

我们把上面的代码转换一下


总结起来说,我们推荐用const,而不是#define预处理指令

1. const可以定义数据类型,提高了类型安全性。例如,我们上面可以指定PI这个常量是double类型

2. const既然是变量(这里有点别扭,它其实是不变的,但名称叫做常值变量),那么就有地址,适用面更加广

3. 语法上也更好理解一些

题外话:在C#中能不能使用符号呢?

C#中也可以使用符号定义,例如下面这样


一般这样做的目的都是为了改变编译行为。因为#define是编译器指令

除了用#if这样的条件编译语句之外,我们还可以用Conditional指令


[Conditional("MINI")]//Conditional 是一个新的Attribute,可以进行条件编译,本例的意思是只有定义了MINI这个符号的情况下,才将该方法编译进去。否则,任何其他调用处都将放一个空白。


但是conditional只能针对void方法,这其实很好理解。因为你要知道,它可能被替换掉,就是可能不被编译。如果它有返回值,而且该值需要被其他程序代码使用,那不就是麻烦了吗



来源:神秘3次

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在DPU概念诞生之初,人们争论它“应如何定义”,但后来发现,只有定义,还远不能说明 DPU能做什么、有什么作用、如何与现有系统更好地协同。本文将讨论DPU发展中的四个关键问题:DPU是什么?DPU可以标准化吗?DPU产业...

关键字: DPU 定义

数据结构的定义和简介

关键字: 数据结构 定义

AMD处理器在消费级市场上一直是针脚式设计,而在服务器领域则一直是触点式,比如曾经的皓龙,比如现在的霄龙,比如从霄龙延伸而来的线程撕裂者(ThreadRipper)。 AMD霄龙系列使用的封装接口是S

关键字: AMD sp3 定义 接口 撕裂者 触点 霄龙 tr4 针脚

8月2日消息,AMAZFIT智能手表2迎来系统更新,最新版本:1.0.6.0。新增“经典”表盘小组件定义功能,此外通话中可点击表冠按钮退出通话界面。 更新内容如下: -新增“经典”表盘小组件定义功能

关键字: 定义 系统更新 华米amazfit智能手表2 表盘 小组件

  PIC单片机端口的位定义,属于需要背诵的内容。    以PIRTB为例,PIC单片机端口寄存器的位(即8位)定义,实写如下:

关键字: 单片机 定义 寄存器 端口
关闭
关闭