【发布时间】:2013-06-20 11:07:23
【问题描述】:
在 common lisp 中,是否有 推荐 外来类型的命名约定? (和一般类型)?例如:
(cffi:defctype glyph-index-t :uint32)
(cffi:defcstruct Point
(x :int32)
(y :int32))
(cffi:define-foreign-library fontlib (t (:default "font")))
(cffi:use-foreign-library fontlib)
(cffi:defctype font-ptr-t :pointer)
(cffi:defcfun "hasKerning" :boolean (fontptr font-ptr-t))
(cffi:defcfun "getKerning" Point
(fontptr font-ptr-t)
(glyph1 glyph-index-t)
(glyph2 glyph-index-t))
在此示例中,defcstruct Point 对应于 C/C++ 类型 struct Point{int32 x, y;};,glyph-index-t 对应于 typedef uint32 GlyphIndex;,font-ptr-t 是 struct Font*。
我不确定我是否应该简单地将-t 后缀添加到所有内容(就像我对glyph-index-t 所做的那样),使解释器区分大小写(所以我可以使用大写来指示类型,就像在 C++ 中一样,即可能是个坏主意),或者是否有其他传统方法可以做到这一点。有什么建议吗?
【问题讨论】:
-
只是吹毛求疵——解释器(和编译器)总是区分大小写的;默认情况下,reader 会进行向上转换。您仍然可以通过相应的转义将混合大小写的符号名称与默认的 readtable 一起使用,例如
|MixedCaseSymbol|或us\o\fa。 -
@JoshuaTaylor:是的,我知道,但是 AFAIK,区分大小写的 lisp 是一种非常非标准/“不寻常”的编码风格。另一方面,我正在为自己编程,所以这应该不是问题......
标签: common-lisp ccl cffi