c - 如何在 C 中将无符号定义变量转换为有符号定义变量

标签 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”。 我是否有机会使用预处理器函数修复此问题?(例如将无符号定义值转换为有符号定义值...)?

最佳答案

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

#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 ".";

关于c - 如何在 C 中将无符号定义变量转换为有符号定义变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25041215/

相关文章:

c - 宏与静态内联?

c++ - 在头文件中包含指令?

java - Java 字节数组中的无符号字节

c++ - 在 vector 循环中使用 int 而不是 size_t 可以吗?

c - 这里有一个非常奇怪的错误 : dereferencing pointer to incomplete type

可以使用c代码更改系统的Endianess吗

c - 如何将字符串数组传递给函数?

ios - 如何比较前缀 header 中的 $PRODUCT_NAME?

c - glibc 检测到 realloc() : invalid next size: 0x

c++ - unsigned short int 和 unsigned int 或 unsigned short 之间有什么区别?