GNU C無法擴充套件(5)

要研究LINUX核心,C語言是基礎中的基礎,但是LINUX並不是完全的標準C,而是對標準C做了很多擴充套件,這些擴充套件特性對於我們分析核心有著很重要的作用,下面做些總結性的工作。
5. 標號元素
- 在標準C裡,陣列或者結構變數的初始化值必須以固定的順序出現,而在GCC中,通過制定索引或者結構域名,則允許初始化值以任意順序出現。
- 指定陣列索引的方法是在初始化值前面寫
[INDEX]=
,還可以使用[FIRST … LAST]=
的形式指定一個範圍。比如:
intarray[20] = {[2] = 100, [10 … 19] = 200};
對於結構體初始化,比如:
structpersonBill = { .name = “Bill Gates”; .age = 50; .wealth’s world ranking = 1; };
- 將結構Bill的元素name初始化為”Bill Gates”, 元素age初始化為50,依此類推。
使用這種形式,當結構體的定義變化導致元素的偏移位置改變時,仍然可以確保已知元素的正確性。對於未出現在初始化中的元素,其初值為0。

我有好茶,你有好書嗎?