我正在浏览Linux源代码,我在initramfs的第400行遇到了一段不熟悉的代码。我知道括号中的名字是188的枚举中的状态。在我看来,这是一个默认的数组设置函数指针(我可能是错的)。
我不明白括号的用途是什么,用例是什么?我也发现等号令人困惑。另外,我想知道代码实现的模式是否有通用名称。
import * as types from '../constants/constants';
import Immutable from 'immutable';
const initialState = Immutable.Map({});
export default function boardReducer(state = initialState, action) {
switch (action.type) {
default:
return state;
}
}
方;为一个天真/一般的问题道歉,我正在努力扩大我对C.的了解。我搜索并找不到英文源的综合评论版本。
答案 0 :(得分:2)
变量actions
是一个数组,使用方括号[]
用于指示符,即告诉编译器正在初始化数组的索引。 / p>
根据C11规范(§6.7.9/ 6):
如果指定人员的表格为
[ constant-expression ]
然后当前对象(下面定义)应具有数组类型,表达式应为整数常量表达式。如果数组的大小未知,则任何非负值都有效。
枚举标识符计为constant-expression
。
这意味着你可以做一些像这个愚蠢的例子:
#include <stdio.h>
int main(void)
{
int array[] = {
[2] = 0, // Initialize array[2] to 0
[0] = 2, // Initialize array[0] to 2
[1] = 1 // Initialize array[1] to 1
};
for (size_t i = 0; i < (sizeof array / sizeof array[0]); ++i)
printf("array[%d] = %d\n", i, array[i]);
return 0;
}
上面的程序应该打印
array[0] = 2 array[1] = 1 array[2] = 0