整型常量到const char*的静态转换

static conversion of integer constant to const char*

本文关键字:静态 转换 char const 整型常量      更新时间:2023-10-16

我有一个在编译时已知的整数常数(但不是在代码编写时),我想生成,也在编译时,一个const char*持有它们作为ASCII。例如

const int  C         = IntegerConst;
const char*C_as_text = StaticConvert(A);

这样,如果IntegerConst在某些#include d头文件中给定,例如IntegerConst=42,则C_as_text="42"

任何想法如何获得这样的StaticConvert()功能?原则上,这必须是可能的,因为编译器和预处理器手头有所有必要的信息。

你可以使用预处理器指令:

#define StaticConvert(N) #N

这里的条件是您需要提供数字本身为N。例如

const int C = 42;
const char *C_as_test = StaticConvert(42);

'stringize'预处理器操作符:

#define StaticConverter(V) #V
const char *x = StaticConverter(56);
assert(x[0] == '5' && x[1] == '6' && x[2] == 0);

使用预处理器的字符串化操作符