首先我们需要明确一点,在c++中不提倡使用宏。我们可以使用const代替,来定义一般的常量。对于一些函数,可以考虑inline关键字,可以达到同样的高效率。
1.为什么c++中不提倡使用宏呢?
这主要是由于宏背后所潜藏的安全机制以及误用频繁造成的。
对于宏,我们应明白其实质就是“替换”,编译器在编译阶段就会进行宏替换,使用你所定义的常量(函数)替换所有出现该定义位置,其替换过程说白了,仅仅是字符替换而已,因而会因此发生很多误用,最常见的就是所谓的“边际效应”。
例如:
#define N 100
#define M 200 + N
当你在程序中使用 M*N 时,原本想要的应该是100 * (200+ N ),而实际上,编译器却给你变成了 100 * 200 + N,这就是所谓的边际效应,说白了,就是替换出现了错误。(我在后面会讲述这一问题的注意事项)
形成良好地编写习惯是一个优秀程序员的基本素质。记住一句话:编程是一门艺术,态度决定高度,细节决定成败!