1,意思就是"尽量以编译器(compiler)"取代预处理器(preprocessor)"
2,如果你这么做:
#define PI 3.14
PI可能在编译之前就先被预处理器移走了,也没有机会被编译器看见.结果,PI没有进入符号表.
一个既简单又有效率的做法:使用常量.
const double PI = 3.14;
3,有时,我们需要定义一个class的专属常量,即这个常量的生存空间局限于class内.
我们可以这么做:
class GamePlayer
{
public:
static const int NUM = 5; //常量的声明和初始化,不是定义
int scores[NUM]; //常量的运用
}
const int GamePlayer::NUM; //这里才是定义
4,另一个误用#define的常见例子:实现函数宏.
如:
#define max(a,b) ((a) > (b) ? (a) : (b))
加上括号,也有问题,看下面的动作:
int a = 5, b = 0;
max(++a, b);//a会被累加两次
max(++a, b+10); //a被累加一次
使用inline函数,可以获得宏带来的高效率以及函数带来的可预期行为和引数型别检验.
如:
template<class T>
inline const T& max(const T& a, const T& b)
{
return a > b ? a : b;
}
5,但是预处理器还是需要.
#include和#ifdef/#ifndef在编译控制过程中依旧扮演重要的角色.
分享到:
相关推荐
在编程领域,`const`、`#define`与`inline`是三个常用的关键字或预处理器指令,它们各自具有独特的作用和使用场景,掌握它们的区别和正确应用是提升代码质量和效率的重要手段。 #### 1. `const`关键字 `const`...
在本文中,我们将详细介绍 const 和 #define 的用法和差异,并讨论为什么 const 正在取代 #define。 const 的用法 在 C++ 中,const 是一种修饰符,用于修饰变量、函数参数、函数返回值等,它可以确保变量或函数的...
在C语言中,定义常量通常可以使用const修饰符和#define预处理命令两种方式。这两种方法虽然在很多情况下可以互换,但它们之间存在一些本质的区别,了解这些区别对于编写高效、可维护的代码至关重要。 首先,我们来...
上述代码的意图是定义两个 `int` 类型的指针 `a` 和 `b`,但由于 `#define` 的工作方式,实际上定义的是一个 `int` 类型指针 `a` 和一个 `int` 类型变量 `b`。正确的做法是使用 `typedef` 语句来定义指针类型: ```...
当结合使用`#define`和`const`时,可能会出现一些混淆。考虑以下代码片段: ```c typedef char* pStr; char string[4] = "abc"; const char* p1 = string; const pStr p2 = string; p1++; p2++; ``` 在这里,`p1...
尽管`#define`仍然有用,特别是在需要文本替换或者实现简单的宏功能时,但程序员更倾向于使用`const`来定义常量,以获得更好的类型安全和编译时检查。因此,在编写C++代码时,尽可能地使用`const`代替`#define`是一...
条款1:尽量用const和inline而不用#define 条款2:尽量用而不用 条款3:尽量用new和delete而不用malloc和free 条款4:尽量使用c++风格的注释 第二章 内存管理 条款5:对应的new和delete要采用相同的形式 条款6:析构...
在C/C++编程语言中,`#define` 是预处理器指令,用于创建宏定义,它在...因此,在使用宏定义时,需谨慎处理,尤其是在处理复杂表达式和函数宏时,应尽量考虑使用inline函数或者C++11引入的 constexpr 关键字来替代。
### C语言中const定义常量 #### 一、引言 C语言作为一种广泛使用的编程语言,在软件开发领域占据着极其重要的地位。为了更好地理解和运用C语言中的特性,掌握`const`关键字的使用变得尤为重要。本文将详细介绍如何...
在编写代码时,应尽量遵循良好的编程实践,例如使用`const`代替无类型的`#define`常量,使用函数代替宏来实现复杂的逻辑,以及正确处理头文件的包含以避免重复定义。理解并正确使用`#define`,能提高代码的可读性...
例如:这里程序文件开头有如下#define语句 代码如下: #define N 10 #define PI 3.14 #define MAX 10000 #define Heigth 6.65 … … 假设这里程序运行出错误,而且就是在我们使用这些常量有错误,此时编辑器应该会抛...
从以上的概念便也能基本清楚,typedef只是为了增加可读性而为标识符另起的新名称(仅仅只是个别名),而#define原本在C中是为了定义常量,到了C++,const、enum、inline的出现使它也渐渐成为了起别名的工具。...
在C语言编程中,`const`关键字和`#define`预处理器宏是两种常见的...总的来说,尽量使用`const`和`inline`代替`#define`,可以提高代码的可读性、可维护性和安全性。理解这些差异对于编写高质量的C语言代码至关重要。
在C++编程语言中,`const`和`#define`都是用来定义常量或不可变值的工具,但它们在实现方式、作用范围、类型安全和功能上有着显著的差异。 首先,`#define`是一种预处理器指令,它在编译前会进行文本替换。这意味着...
在程序开发过程中,`#define` 是一个非常常见的预处理器指令,被广泛应用于多种编程语言之中,尤其是在 C 和 C++ 语言中。本文将从多个方面详细介绍 `#define` 的使用方法,并通过具体示例帮助读者更好地理解和应用...
EFFECTIVE C++ 条款03 尽量使用const 思维导图 在 C++ 编程中,使用 const 关键字可以提高代码的可读性、可维护性和安全性。本文将详细介绍 EFFECTIVE C++ 的第三条款:尽量使用 const 思维导图。 一、const ...
在PHP编程中,`const`和`define`都是用来定义常量的方法,但它们之间存在着明显的差异。本文将从多个方面详细对比这两种定义方式的不同之处,并通过具体的例子加以说明。 #### 1. 定义范围 - **`const`**: 主要...
在Visual Basic中,有两类常量声明方式:`Const` 和 `#Const`,它们各有特点,在不同的场景下发挥着不同的作用。 ### `Const` 关键字 `Const` 是用来声明编译时常量的关键字,这意味着一旦一个变量被用 `Const` ...