为什么有两种方法可以在CPP中“声明”常量? 哪个更好,或者我应该写,我应该在哪个时候使用?
#define MYCON 100
const int MYCON=100
答案 0 :(得分:8)
简短规则:对于条件编译(如DEBUG和RELEASE的不同代码片段),使用#define
。对于所有其他情况,请使用const
构造。
答案 1 :(得分:1)
使用#define
生成一个预处理器符号:在预处理发生后它根本不存在,相当于在文件中键入“100”。
预处理程序符号的功能:
#ifdef
type*
的参数)使用const type
声明一个c ++变量。
人们普遍认为将const
用于“程序”常量更好,而#define
仅用于条件编译(这代表了从(非常!)旧时代的变化,当时你不能总是依赖在c编译器上智能地处理const
并且首选使用#define
。如果没有别的,这可以让你更好地控制符号的范围。
答案 2 :(得分:0)
在C的原始版本中,#define
是唯一可用于声明常量值的方法。这是在编译时而不是在运行时完成的:编译器硬编码每条指令的值。 const
是C ++的一个特性(后来以有限的方式添加到C中),在C ++中,建议您使用const而不是#define。 const
变量实际存在于内存中,并且可以在运行期间在构造时初始化。
#define
仍然经常在C ++中使用,主要用于与编译器进行通信。
一些例子:
用于防止多个类声明的类头包装器:
#ifdef VAL_H
#define VAL_H
// Define class header
#endif // VAL_H
条件编译:
// Comment this line to disable debug output
#define DEBUG
// Some code
#ifdef DEBUG
// Only gets compiled if DEBUG is defined.
cerr << "Debug output here" << endl;
#endif