Vala const从读写变量初始化

时间:2014-07-28 03:54:27

标签: vala

我注意到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;
//                 ^^^^^^^^

C

#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;
}

1 个答案:

答案 0 :(得分:6)

const在Vala与C中有不同的含义.AC变量const只是只读的,而Vala中的const是编译时常量,因为它是在C#。