【发布时间】:2019-09-26 18:19:11
【问题描述】:
我希望能够从宏中生成这些选项:
if(void* temp = func(arg)){ foo(temp, variable);return; }if(void* temp = func2(arg)){ foo(temp, variable2);return; }if(void* temp = func3(arg)){ foo(temp, variable3);return; }
依此类推,但正如您所见,1 是唯一的特例。
我想编写一个宏,它接受一个数字作为参数并生成一行代码,可能数字远大于 3。不幸的是,如果用户传递一个 1 并执行一般情况,这需要在特殊情况下构建如果他们通过任何其他数字。有没有办法做到这一点?
【问题讨论】:
-
为什么不填充函数指针数组而不是宏地狱呢?然后,您可以使用提供的索引在 if 语句中对数组进行索引(第零索引中没有任何内容。)
-
@NathanOliver 肯定有更好的方法可以做到这一点,主要是从使用数组或
func和variable之间的其他关联开始,但因为我不拥有这里的代码,我认为宏可能更容易,并且不需要我定义自己的映射数组,我可能只会使用其中的 1 个映射。
标签: c++ macros arguments conditional-statements precompile