LuaJIT 的 C 解析器对字符串支持

在官方网站 LuaJIT website 上,可以阅读到以下内容:

C 解析器遵守 C99 语言标准,以及以下扩展:

- 字符串和字符字面量中的 '\e' 转义字符

这应该意味着 LuaJIT 的 C 解析器支持字符串字面量!

让我们试试:

    ffi.cdef[[static const char * s = "foo";]]
    ffi.cdef[[static const char s[] = "foo";]]
    ffi.cdef[[static const char s[4] = "foo";]]

不幸的是,以上任何一种方式都不起作用:每次调用 ffi.cdef 都会引发 invalid C type 错误。

你能提供一个示例,展示如何将字符串字面量传递给 LuaJIT 内置的 C 解析器吗?

P.S.

我应该提到,我可以使用相同的方式成功地声明 intchar 变量,但无法声明字符串变量。

ffi.cdef[[static const int k = 42;]]
print(ffi.C.k)  -->  42
点赞