我想知道我是否可以导入C类型定义或者我是否需要在Nim中重新定义它?
看看名为jhead
的程序与这个proc接口
int ReadJpegFile(const char * FileName, ReadMode_t ReadMode);
第二个参数ReadMode_t是jhead.h
中的枚举类型
typedef enum {
READ_METADATA = 1,
READ_IMAGE = 2,
READ_ALL = 3,
READ_ANY = 5 // Don't abort on non-jpeg files.
}ReadMode_t;
我可以导入这个qazxsw poi吗?或者我必须像下面那样重新定义它
ReadMode_t
Nim编译器需要知道那些C常量,所以你必须定义它们才能在Nim中使用它们。然而,这种繁琐的复制可以通过type
ReadMode_t* = enum
READ_METADATA = 1, READ_IMAGE = 2, READ_ALL = 3, READ_ANY = 5
等工具在某种程度上简化甚至自动化。事实上,如果你采取以下c2nim文件:
test.h
并运行typedef enum {
READ_METADATA = 1,
READ_IMAGE = 2,
READ_ALL = 3,
READ_ANY = 5 // Don't abort on non-jpeg files.
}ReadMode_t;
int ReadJpegFile(const char * FileName, ReadMode_t ReadMode);
,它将为您生成以下c2nim test.h
文件,保存大部分繁琐的翻译:
test.nim