gpt4 book ai didi

c - 拥有无名数组的优势/考虑是什么

转载 作者:行者123 更新时间:2023-12-01 12:57:29 24 4
gpt4 key购买 nike

我遇到过这样的 C 代码:

static char *mem_types[M_CNT] = {
[M_ABC] = "abc",
[M_DEF] = "DEF",
[M_XYZ] = "XYZ",
};

M_CNT是一个宏常量; M_ABC、M_DEF 和 M_XYZ 都是枚举。

这样的声明对我来说很奇怪,或者更确切地说,我想知道这样声明一个字符串数组有什么好处。我会简单地把它作为

static char *mem_types[M_CNT] = {
"abc",
"DEF",
"XYZ",
};

我唯一能想到的是,声明可以精确地限制每个字符串的大小。

还有其他考虑吗?

最佳答案

这使您的代码不受枚举值重新排序的影响。以下是其工作原理的说明:

#include <stdio.h>

enum {
aa, bb, cc
};

static char *mem_types[3] = {
[aa] = "abc",
[cc] = "DEF",
[bb] = "XYZ",
};

int main() {
int i;
for (i = 0 ; i != 3 ; i++) {
printf("%s\n", mem_types[i]);
}
}

这是程序打印的内容。请注意 XYZDEF 如何交换位置以匹配 enum 的顺序。

abc
XYZ
DEF

关于c - 拥有无名数组的优势/考虑是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8958408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com