将整数常量静态转换为const char *

时间:2011-11-01 11:50:04

标签: c++ c

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

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

如果在IntegerConst d个头文件中提及#include,请说IntegerConst=42,而不是C_as_text="42"

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

3 个答案:

答案 0 :(得分:3)

您可以使用预处理程序指令:

#define StaticConvert(N) #N

此处的条件是您需要将号码本身提供为N。 e.g。

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

答案 1 :(得分:2)

'stringize'预处理程序运算符:

#define StaticConverter(V) #V

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

答案 2 :(得分:0)