Unicode 如何找到LC_XXX locale integr常量的值,以便与cffi一起使用
我有以下代码:Unicode 如何找到LC_XXX locale integr常量的值,以便与cffi一起使用,unicode,lisp,common-lisp,ncurses,ffi,Unicode,Lisp,Common Lisp,Ncurses,Ffi,我有以下代码: (define-foreign-library libc (:unix "libc.so.6")) (use-foreign-library libc) (defcfun "setlocale" :pointer (category :int) (locale :pointer)) 我想做: (with-foreign-string (locale "en_US.UTF-8") (setlocale XXXX locale)) 如何找到各种LC_xxx常量的整数
(define-foreign-library libc
(:unix "libc.so.6"))
(use-foreign-library libc)
(defcfun "setlocale" :pointer (category :int) (locale :pointer))
我想做:
(with-foreign-string (locale "en_US.UTF-8")
(setlocale XXXX locale))
如何找到各种LC_xxx常量的整数值,以便将它们传递给上面的调用?有没有更好的方法来实现这一点?您应该在Lisp代码中重新声明常量。事实上,.我在我的语言环境中看到了这一点。h:
/* These are the possibilities for the first argument to setlocale.
The code assumes that the lowest LC_* symbol has the value zero. */
#define LC_CTYPE __LC_CTYPE
#define LC_NUMERIC __LC_NUMERIC
#define LC_TIME __LC_TIME
#define LC_COLLATE __LC_COLLATE
#define LC_MONETARY __LC_MONETARY
#define LC_MESSAGES __LC_MESSAGES
#define LC_ALL __LC_ALL
#define LC_PAPER __LC_PAPER
#define LC_NAME __LC_NAME
#define LC_ADDRESS __LC_ADDRESS
#define LC_TELEPHONE __LC_TELEPHONE
#define LC_MEASUREMENT __LC_MEASUREMENT
#define LC_IDENTIFICATION __LC_IDENTIFICATION
和bits/locale.h包含:
enum
{
__LC_CTYPE = 0,
__LC_NUMERIC = 1,
__LC_TIME = 2,
__LC_COLLATE = 3,
__LC_MONETARY = 4,
__LC_MESSAGES = 5,
__LC_ALL = 6,
__LC_PAPER = 7,
__LC_NAME = 8,
__LC_ADDRESS = 9,
__LC_TELEPHONE = 10,
__LC_MEASUREMENT = 11,
__LC_IDENTIFICATION = 12
};
你可以编译一个C程序来打印它们。
这就是Groveler所做的。是的,我知道,但我必须知道重新声明它们的值。我的问题是在libc的整个代码中找不到值。基本上,我在找一个Groveler会去做的地方。我找不到包含其值的标题。我只是想知道它们在C代码中的什么位置。我不知道为什么我没有找到第二部分。无论如何谢谢你