在各种C代码中,我看到常量定义如下:
#define T 100
而在C的例子中,几乎总是:
const int T = 100;
我的理解是,在第一种情况下,预处理器将用T代替每个T的实例.在第二个例子中,T实际上存储在内存中.
在C中定义常量是否被认为是不好的编程习惯?
解决方法
Is it considered bad programming practice to #define constants in C++?
是的,因为所有的宏(它们是#define定义的)都在一个命名空间中,它们在任何地方生效.包含const限定变量的变量可以封装在类和命名空间中.
在C中使用宏,因为在C中,const限定变量实际上不是常量,它只是一个不能被修改的变量.一个const-qualified变量不能出现在一个常量表达式中,所以它不能用作数组大小,例如.
在C中,使用常量表达式(如const int x = 5 * 2;)初始化的const限定对象是一个常量,可以在常量表达式中使用,因此可以使用它们.