我想做的是:
#define A 1
#define B 2
#define C 99
const char row1[] = {A|B, B, A, C};
const char row2[] = {B, A, C};
...
const char row99[] = {B, A, B ,A, A, C};
const char *test[]= {row1, row2, ... , row99};
我的问题是如何通过以下方式实现上述目标:
#define A 1
#define B 2
#define C 99
const char *test[] = {
{A|B, B, A, C},
{B, A, C},
....
{B, A, B ,A, A, C}
}
我不想要像这样固定长度的2D数组:
test[][5] = { {A|B, B, A, C}, {B, A, C}, ...
我还需要#define并在初始化中使用这些令牌。
非常感谢,如果有人能告诉我正确的语法来做到这一点。日Thnx。
答案 0 :(得分:1)
我猜这是指C.在C99你可以这样做:
char const *const test[] = {
(char const[]){1, 2, 3, 4},
(char const[]){1, 2, 3},
(char const[]){1, 2, 3, 4, 5, 6, 7}
};
(typename[]){initializer-list}
语法称为复合文字。在C99之前,唯一的文字类型是字符串文字,你想做的事情是不可能的;您必须使用第一种方法,或对您的定义系统进行重大更改。
请注意,在此代码中,无法确定每个char系列的长度。您需要添加一些确定长度的方法(例如,结尾处的标记值)。