- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在浏览 Linux 源代码时,在 initramfs 的第 400 行遇到了一段不熟悉的代码。 .我知道括号中的名称是 188 枚举中的状态。在我看来,这是一个默认数组设置函数指针(我可能是错的)。
我不明白括号的用途,示例用例是什么?我还发现等号令人困惑。此外,我想知道代码实现的模式是否有通用名称。
static __initdata int (*actions[])(void) = {
[Start] = do_start,
[Collect] = do_collect,
[GotHeader] = do_header,
[SkipIt] = do_skip,
[GotName] = do_name,
[CopyFile] = do_copy,
[GotSymlink] = do_symlink,
[Reset] = do_reset,
};
侧面;对于一个幼稚/一般性的问题,我深表歉意,我正在努力扩大我对 C 的了解。我搜索了但找不到英文源的全面评论版本。
最佳答案
变量 actions
是一个数组,使用方括号 []
用于指示符,即告诉编译器什么索引正在初始化数组。
来自 C11 规范 (§6.7.9/6):
If a designator has the form
[ constant-expression ]
then the current object (defined below) shall have array type and the expression shall be an integer constant expression. If the array is of unknown size, any nonnegative value is valid.
枚举标识符被算作一个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] = 2array[1] = 1array[2] = 0
关于c - 如 initramfs 所示,左手赋值中无名括号背后的机制是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38689381/
我想知道像 img 那样最好的方法是什么。我的意思是 block 对齐从左到右并取行的最大长度。哪个更好,编写一个脚本来指定 block 大小并使其适应容器大小,或者使用 css 网格以某种方式进行。
给定字符串: p\u00e5 \u00e5rsbasis i marts.P\u00e5 \u00e5rsbasis faldt industriproduktionen 0,6 procent (-
有没有什么方法可以使用 IPython 用来显示它的格式和对齐方式,将 DataFrame 作为字符串保存到磁盘? 请注意,我想保存完整的数据框,而不仅仅是它的摘要(即头部和尾部)。 最佳答案 IPy
@RestController @ComponentScan public class FileUploadController { @Autowired Environment en
我在浏览 Linux 源代码时,在 initramfs 的第 400 行遇到了一段不熟悉的代码。 .我知道括号中的名称是 188 枚举中的状态。在我看来,这是一个默认数组设置函数指针(我可能是错的)。
我正在尝试编写一个程序,该程序可以在读取命令行参数后屏蔽它们。我知道它存储在 PEB 中,所以我尝试使用 the answer to "How to get the Process Environme
我正在尝试编写一个程序,该程序可以在读取命令行参数后屏蔽它们。我知道它存储在 PEB 中,所以我尝试使用 the answer to "How to get the Process Environme
最近我安装了 Zshell 而不是 Bash。在此期间,然后我看到我的 $PATH 有 7 英里长,所以我决定尝试稍微清理一下。当我卸载 rvm(通过运行 rvm implode 然后是 rm -rf
这是显示转换后图像的页面 这是我的二进制图像数据 ScreenPic 表的数据 请帮忙...让我知道从数据库中获取图像有什么问题。 将二进制转换为图像逻辑的代码。: namespace OverHR.
我有我的网站,它在谷歌搜索中可见,但我希望它显示在 GridView 中,如谷歌搜索关键字(例如“twitter”)所示。有人可以指导我如何实现这一目标吗? 最佳答案 它叫做 sitelinks .
如何获取变量的字符串表示形式,如 console.log() 输出时所示? 例如, const myFunc = async () => 'my string'; ret = myFunc(); co
这个问题在这里已经有了答案: What does the slash mean in help() output? (3 个回答) 关闭 7 年前。 help(foo)交互返回的签名中,/是什么意思?
使用最新版本的tibble,当设置width = Inf时,宽tibble的输出无法正确显示。 根据我对以前版本的测试,宽标题打印得很好,直到 1.3.0 之后的版本。这就是我希望打印的输出,如下所示
以下(正确)不起作用: package main import ( "os" "time" ) func main() { os.Args[0] = "
我们目前有太多用户试图通过使用文件锁的遗留程序访问单个文件的问题。 我正在尝试编写一个将在服务器上运行并监视此特定文件(平面文件数据库)的 dotnet 程序是否可行。每当客户端尝试访问此文件并且它被
以下(理所当然)不起作用: package main import ( "os" "time" ) func main() { os.Args[0] =
我如何总结 html 跨度中的值。我被卡住了,因为我尝试过的代码没有获取 html 值。 12 13 14 最佳答案 根据您的编辑,
任何人的任何想法 - 当我的 console.log 显示 h2_JSON 是一个对象时,为什么我的 javascript 中的逻辑落入此条件的“ELse”部分?? if (h2_JSON == {}
是否可以以某种方式指定toggle('blind')动画的速度? 我的问题是这样的:我用它来显示动态内容,所以我通常不知道要显示的元素的确切大小。由于动画速度取决于“持续时间”参数和可变的元素大小,因
我正在尝试使用 C 来实现这个合并排序伪代码 我想出了这个 int p = 0, r = SEIZE-1, i, j, k; int q = (p + r)/2; int n1 = q-p+1, n2
我是一名优秀的程序员,十分优秀!