【问题标题】:Char mask, or get char size in vala?字符掩码,还是在 vala 中获取字符大小?
【发布时间】:2015-11-24 16:54:12
【问题描述】:

我需要一个字符大小的所有位都为 1,而我知道在 C 中有limits.h,而vala 有int.MAX,我不确定字符大小。

我怎样才能找到它 - 一个字符大小 - 并确定生成我的位掩码,而不是使用 0xFFFF ?

【问题讨论】:

    标签: vala


    【解决方案1】:

    apmasell 是对的,但我不太喜欢他的回答。如果你想要 char 的大小(以字节为单位),你应该使用 sizeof(char) 而不是依赖于 glib vapi 中的值保持不变。

    char.MAX,如果存在,则不会是 0xff (255),而是 0x7f (127),但这不是掩码的正确值。从实际的角度来看,假设 0xff 是正确的值可能是安全的,但如果您想安全起见,您可以使用 ~((char) 0)

    【讨论】:

    • 好吧,让您了解这些信息,我同时最终使用const uchar CHARMAX = 0xFF;,因为这是我真正想要的。我想我现在将使用const uchar CHARMAX = ~((uchar) 0);
    • FWIW,使用 uint8 代替 uchar 可能更合适。如果您要处理的实际上不是无符号字符(并且,基于您使用的是位掩码的事实,我怀疑它是),那么您应该只使用适当的整数类型。在 C 中使用 char 很常见,因为在 C99 之前,它基本上是获得非常小的整数(小于短整数)的唯一方法,但 Vala 没有这个问题。
    【解决方案2】:

    在 Vala 中,char 是一个字节。这是 VAPI 声明:

    [IntegerType (rank = 2, min = 0, max = 127)]
    public struct char {
    

    【讨论】:

      猜你喜欢
      • 2019-08-04
      • 2014-02-12
      • 2018-09-08
      • 1970-01-01
      • 2018-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多