我想在新常量的定义中使用一些先前定义的常量,但我的C编译器不喜欢它:
const int a = 1;
const int b = 2;
const int c = a; // error: initializer element is not constant
const int sum = (a + b); // error: initializer element is not constant
有没有办法使用其他常量的值来定义常量?如果没有,这种行为的原因是什么?
答案 0 :(得分:7)
Const vars不能定义为表达式。
#define A (1)
#define B (2)
#define C (A + B)
const int a = A;
const int b = B;
const int c = C;
答案 1 :(得分:7)
使用枚举优先于预处理器宏来获取整数const值:
enum {
A = 1,
B = 2
};
const int a = A;
const int b = B;
const int c = A;
const int sum = (A + B);
适用于C和C ++。
答案 2 :(得分:2)
您只能将文字指定给const变量,因此该程序是非法的。 我认为你应该选择预处理器。
答案 3 :(得分:2)
由于结果是恒定的,我同意Michael Burr认为枚举是这样做的方法,但除非你需要将指针传递给常数整数,否则我不会使用'变量'(是一个常量真的是变量吗?)但只是枚举:
enum { a = 1 };
enum { b = 2 };
enum { c = a };
enum { sum = a + b };