我想知道我是否可以创建使用自定义“shift”(或在编译时创建它的其他方式)创建值的宏。我的意思是,连接两个数字或其他......
类似的东西(当然它不起作用):
#define CUSTOM_DOUBLE(shift) 1.05E shift
我知道我能做到:
#define CUSTOM_DOUBLE(shift) 1.05 * pow(10.0, shift)
但我知道它不是在编译时计算的。
答案 0 :(得分:2)
只要shift
参数作为整数常量(小数形式)传递,这可以由##
运算符完成,它连接预处理标记。例如,它可以实现为:
#include <stdio.h>
#define CUSTOM_DOUBLE(shift) (1.05E ## shift)
int main(void)
{
double d = CUSTOM_DOUBLE(3);
printf("%E\n", d);
return 0;
}
答案 1 :(得分:1)