【发布时间】:2015-03-03 07:01:58
【问题描述】:
我正在处理一个小型宏项目,该项目需要我将二维数组文字传递给我的一个宏,如下所示:myMacro({{0, 1, 2}, {2, 1, 0}})。无需将数组文字的大小传递给宏,有没有办法让它扩展为以下内容:int[2][3] = { {0, 1, 2}, {2, 1, 0} } 或等效的东西(任何保留数组形状的初始化都可以工作)?在此先感谢您的帮助
【问题讨论】:
-
是二维还是任意维度?另外,您是否有第二个索引(列数)的上限?
-
它将始终是 2d,但它可以是任何宽度/长度。例如,它也可以称为
myMacro{{1, 2, 3, 4}, {5, 6, 7, 8}})。没有上限,但每行的列数始终相同。 -
试试可变参数宏?
-
@n.m.我目前正在使用可变参数宏,但我需要能够将
__VA_ARGS__绑定到一个变量以供以后使用。 -
哦,这是 C。我知道解决这个问题的唯一方法是窃取 Boost::Preprocessor 库。 Boost 是一个 C++ 库,但预处理器部分应该适用于 C,只需极少或无需修改。
标签: c arrays multidimensional-array c-preprocessor