如何在C中的signed signed变量中转换unsigned define变量

时间:2014-07-30 15:46:05

标签: c c-preprocessor unsigned stringification

#define VERSION 1U

#define _VALUE_TO_STRING(x) #x
#define VALUE_TO_STRING(var) _VALUE_TO_STRING(var)

#define VERSION_STRING VALUE_TO_STRING(VERSION)

char readMe[] = "The current version of this document is " VERSION_STRING ".";

...

我有这部分代码,我需要在初始化时创建一个全局字符串(readMe)。 上述代码的输出将是 - >该文档的当前版本是1U。 所以我想要的是摆脱那个“U”。 我是否有机会使用预处理器函数来解决这个问题?(比如将无符号定义的值转换为带符号的定义值...)?

1 个答案:

答案 0 :(得分:1)

我认为没有一种预处理器方法可以从U中取出VERSION。但是,您可以将它们组合在一起我建议:

#define UNSIGNED_VERSION 1

#define VERSION UNSIGNED_VERSION ## U

#define _VALUE_TO_STRING(x) #x
#define VALUE_TO_STRING(var) _VALUE_TO_STRING(var)

#define VERSION_STRING VALUE_TO_STRING(UNSIGNED_VERSION)

char readMe[] = "The current version of this document is " VERSION_STRING ".";