我想在纯C中创建一个函数Felix
,使用运算符void vec2_from_vec3(vec2 res, vec3 from)
,如下所示:
##
但是编译器没有让它。有可能吗?
受https://github.com/datenwolf/linmath.h/blob/master/linmath.h启发
答案 0 :(得分:1)
预处理器不会评估/计算n-1
,它只会展开它。例如:3-1
,因此字符串连接不起作用
(现代编译器做到了,但已经太晚了)
你总是可以做那些并不坏的事情:
#define MAGIC_MACROS(n1,n2) \
void vec##n1##_from_vec##n2##(vec##n1 res, vec##n2 from)
并用作:
MAGIC_MACROS(2,3);
请注意,您不应该使用;
结束宏,因此它与函数调用是同构的,并且不会破坏编辑器自动缩进。