使用C中的宏初始化未知大小的2D数组

NerdicViking

我当时正在做一个小型宏项目,该项目需要将二维数组文字传递给我的一个宏,如下所示:myMacro({{0, 1, 2}, {2, 1, 0}})无需将数组文字的大小传递给宏,是否有办法将其扩展为以下内容:int[2][3] = { {0, 1, 2}, {2, 1, 0} }或等效的东西(任何保留数组形状的初始化都将起作用)?预先感谢您的任何帮助

蓝精灵
#include <boost/preprocessor/tuple/size.hpp>
#include <boost/preprocessor/tuple/elem.hpp>
#include <boost/preprocessor/variadic/to_seq.hpp>
#include <boost/preprocessor/seq/for_each.hpp>

#define VA(...) __VA_ARGS__
#define TRANS(r, data, elem) { VA elem},

#define myMacro(name, arg)\
    int name[BOOST_PP_TUPLE_SIZE(arg)][BOOST_PP_TUPLE_SIZE(BOOST_PP_TUPLE_ELEM(0,arg))] = \
    { BOOST_PP_SEQ_FOR_EACH(TRANS, , BOOST_PP_VARIADIC_TO_SEQ arg)}

int main(){
    myMacro(a, ((1,2,3),(4,5,6)) );//=>int a[2][3] = { { 1,2,3}, { 4,5,6}, };
    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章