【问题标题】:how to compile project with uchar_t in ubuntu如何在 ubuntu 中使用 uchar_t 编译项目
【发布时间】:2014-01-06 23:19:28
【问题描述】:

我有一个项目源代码

它包含uchar_t

我需要在 Ubuntu 13.10 中编译这个项目 但是在运行编译时会发出警告:

unknown type name ‘uchar_t’

任何人都有想法解决。替换 uchar_t 或其他解决方案...

【问题讨论】:

  • 你使用的是 g++?

标签: c++ ubuntu compilation


【解决方案1】:

看来,uchar_t 是为了表示某个字符,在这种情况下,您可能希望将其设为 unsigned 字符类型,例如:

typedef unsigned char uchar_t;

这是否有效取决于代码的真正意图。没有上下文,就不可能说出意图是什么。无论哪种情况,我都会在战略位置使用typedef,而不是替换类型。同样,uint_t 可能是

typedef unsigned int uint_t;

不过,这些typedefs 是否做对了,还需要验证。

【讨论】:

  • 我也可以将这个解决方案用于 uint_t 吗?
  • uchar_t 在许多组织和代码库中很常见,表示unsigned char——它与 unicode 无关。
  • @user1974446:你的意思是typedef?当然。但是,我不知道打算使用哪种类型。
  • (无论如何,这绝对是一个可怕的 typedef。)
  • @H2CO3:同意。但是,如果我不得不在各处使用这种类型来修补现有代码,我宁愿使用typedef 而不是替换名称:如果第一次尝试没有猜到正确的类型,这是一个地方需要更改以尝试不同的。
【解决方案2】:

这可能是unsigned char 的别名。

【讨论】:

    【解决方案3】:

    uchar_tushort_tuint_tulong_t 类型是在 sys/types.h 中定义的 Solaris 特定类型,并被注释为 POSIX 扩展。该评论含糊不清,可能意味着它们是(供应商特定的)POSIX 标准的扩展,而不是它们的一部分。其他一些系统定义了它们,而另一些则没有(cygwin,Linux)。它们非常简单,可以通过添加快速替换

    typedef unsigned char   uchar_t;
    typedef unsigned short  ushort_t;
    typedef unsigned int    uint_t;
    typedef unsigned long   ulong_t;
    

    项目标题中的某处。我非常喜欢它们,因为它们更短,只有 1 个单词,遵循 POSIX 和 inttypes.h 命名风格,而且非常明显。

    【讨论】:

      猜你喜欢
      • 2020-09-17
      • 2015-07-09
      • 2010-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-01
      相关资源
      最近更新 更多