簡體   English   中英

需要幫助以了解xv6內核中的語法

[英]Need help to understand the syntax in xv6 kernel

我正在讀取xv6內核的文件,但無法理解以下含義:

static int (*syscalls[])(void) = {
 [SYS_fork]    sys_fork,
 [SYS_exit]    sys_exit,
 [SYS_wait]    sys_wait,
 [SYS_pipe]    sys_pipe,
...

}

誰可以給我解釋一下這個? 特別是方括號(例如[SYS_fork])的含義。 謝謝

該代碼使用舊的替代GNU擴展進行指定的初始化,從而構成了一個函數指針數組。

指定的初始化是C99中添加到C中的一項功能,可讓您指定為哪個數組索引分配數組的特定值,因此不必按順序進行。 結構初始化具有相同的功能,您可以在其中指定要向其分配給定值的特定字段。

數組指定的初始化的C99語法為[index] = value 盡管此代碼特別使用了GCC的較舊替代語法,但根據本文檔,自GCC 2.5起語法已過時,在該語法中未使用等號。

syscall.c索引使用中定義的宏指定syscall.h ,其中第一個被限定為1syscall.h ,et.c.

這很可能是初始化函數指針數組的非標准方法。 標識符SYS_fork等很可能是用於指定元素索引的宏或枚舉常量。

另一個可能性是,這不是C文件,而是在編譯之前使用某些過濾工具將其轉換為語法上有效的C文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM