有没有办法在其他常量的定义中使用const变量?

时间:2009-04-27 19:58:58

标签: c constants

我想在新常量的定义中使用一些先前定义的常量,但我的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

有没有办法使用其他常量的值来定义常量?如果没有,这种行为的原因是什么?

4 个答案:

答案 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 };