假设我有一个 C 代码(dcomplex.h):
typedef double dcomplex[2];
并想在 vala 中使用这样的数据类型。什么可以是最小的 vapi 文件和 vala 调用它?
(最终目标是使用 C99 complex.h 类型。)
我尝试了以下 dcomplex.vapi 文件的许多变体:
[CCode (cheader_filename = "dcomplex.h")]
namespace DComplex {
[SimpleType]
[CCode (cname = "dcomplex", has_type_id = false)]
public struct DoubleComplex {
}
}
并在 vala 代码中使用,例如:
using DComplex;
void main()
{
DoubleComplex x = {1.0, 2.0};
stdout.printf("x = %f + i %f\n", x[0], x[1]);
}
汇编
valac --vapidir . --pkg dcomplex test.vala
导致错误:
error: too many expressions in initializer list for `Complex.DoubleComplex'
DoubleComplex x = {1.0, 2.0};
^^^
error: The expression `Complex.DoubleComplex' does not denote an array
stdout.printf("x = %f + i %f\n", x[0], x[1]);
^^^^