【发布时间】:2014-01-06 23:19:28
【问题描述】:
我有一个项目源代码
它包含uchar_t
我需要在 Ubuntu 13.10 中编译这个项目 但是在运行编译时会发出警告:
unknown type name ‘uchar_t’
任何人都有想法解决。替换 uchar_t 或其他解决方案...
【问题讨论】:
-
你使用的是 g++?
标签: c++ ubuntu compilation
我有一个项目源代码
它包含uchar_t
我需要在 Ubuntu 13.10 中编译这个项目 但是在运行编译时会发出警告:
unknown type name ‘uchar_t’
任何人都有想法解决。替换 uchar_t 或其他解决方案...
【问题讨论】:
标签: c++ ubuntu compilation
看来,uchar_t 是为了表示某个字符,在这种情况下,您可能希望将其设为 unsigned 字符类型,例如:
typedef unsigned char uchar_t;
这是否有效取决于代码的真正意图。没有上下文,就不可能说出意图是什么。无论哪种情况,我都会在战略位置使用typedef,而不是替换类型。同样,uint_t 可能是
typedef unsigned int uint_t;
不过,这些typedefs 是否做对了,还需要验证。
【讨论】:
uchar_t 在许多组织和代码库中很常见,表示unsigned char——它与 unicode 无关。
typedef?当然。但是,我不知道打算使用哪种类型。
typedef 而不是替换名称:如果第一次尝试没有猜到正确的类型,这是一个地方需要更改以尝试不同的。
这可能是unsigned char 的别名。
【讨论】:
uchar_t、ushort_t、uint_t 和 ulong_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 命名风格,而且非常明显。
【讨论】: