我有一个在编译时已知的整数常量(但不是在代码编写时),我想在编译时生成const char*
将它们保存为ASCII。例如
const int C = IntegerConst;
const char*C_as_text = StaticConvert(A);
如果在IntegerConst
d个头文件中提及#include
,请说IntegerConst=42
,而不是C_as_text="42"
。
知道如何获得这样的StaticConvert()
功能吗?原则上这必须是可能的,因为编译器和预处理器具有所有必要的信息。
答案 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)