我注意到Vala不允许您从非const
变量初始化const
变量。为什么是这样?这是故意的设计决定还是错误/遗漏?分别考虑这些Vala和C示例;当C程序编译并按预期运行时,Vala程序无法编译:
void main()
{
const int constInt = 1;
const int a = constInt;
int plainInt = 0;
const int b = plainInt;
stdout.printf("A: %d\n", a);
stdout.printf("B: %d\n", b);
}
// Compiler output:
// test.vala:7.18-7.25: error: Value must be constant
// const int b = plainInt;
// ^^^^^^^^
#include <stdio.h>
int main()
{
const int constInt = 1;
const int a = constInt;
int plainInt = 0;
const int b = plainInt;
printf("A: %d\n", a);
printf("B: %d\n", b);
return 0;
}
答案 0 :(得分:6)
const
在Vala与C中有不同的含义.AC变量const
只是只读的,而Vala中的const
是编译时常量,因为它是在C#。