在C中我可以做类似
的事情#define SIZE 16
int c[SIZE];
但在我做Vala时
const int SIZE = 16;
int c[SIZE];
我在编译期间收到错误,结果是"未声明此处(不在函数中)"
有没有办法在vala中删除幻数并用常量替换它们?
答案 0 :(得分:1)
动态分配是要走的路:
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];