Vala - 常量而不是幻数

Vala - constant instead of magic number

在 C 中我可以做类似的事情

#define SIZE 16
int c[SIZE];

但在 Vala 时我这样做

const int SIZE = 16;
int c[SIZE];

我在编译期间遇到以 "undeclared here (not in a function)"

结尾的错误

有什么办法可以去除vala中的幻数并用常量替换它们吗?

动态分配是可行的方法:

const int SIZE = 16;
int[] c = new int[SIZE];

特别是如果 SIZE 是您通过 vapi 文件绑定到的某些 C 头文件的一部分。

在 vapi 情况下,静态分配也适用:

mylib.h

#define MYLIB_SIZE 16

mylib.vapi

namespace Mylib {

    // You can optionally specify the cname here:
    //[CCode (cname = "MYLIB_SIZE")]
    const int SIZE;
}

main.vala

int c[Mylib.SIZE];