linux核心中GNU C和標準C的區別

2021-10-06 03:47:16 字數 436 閱讀 5761

gnuc 是標準c 的擴充套件

1. 從安全的最值定義可以想到區別有3點:1.1 支援將大括號的復合語句當成乙個表示式,成為語句表示式

1.2 typeof 關鍵字 可以獲取乙個變數的型別

1.3 巨集定義 可以帶變引數

2.uboot啟動的時候會進行相關初始化,其實就是呼叫相關硬體的初始化函式,不過他不是直接呼叫某些函式,而是到固定的位址段去讀取函式,然後執行。這就要求我們的初始化函式放在那個固定位址段處,在標準c沒有辦法的,但gnuc可以有乙個特殊屬性宣告,能夠告訴編譯器,將函式或變數編譯位址為某個**段。特殊屬性宣告,有十幾個吧。

3. 為了實現變長陣列,可以定義陣列元素個數為0

4.內建函式

5.結構體初始化,可以不按順序,用標號元素

6.當前函式名

7.case 可以是連續的 表示   case 'a' ... 'f'

linux核心 使用的 gnu c 擴充套件

gnu cc是乙個功能非常強大的跨平台c編譯器,它對c語言提供了很多擴充套件,這些擴充套件對優化 目標 布局 更安全的檢查等方面提供了很強的支援。本文把支援gnu擴充套件的c語言稱為gnu c。linux核心 使用了大量的gnu c擴充套件,以至於能夠編譯linux核心的唯一編譯器是gnu cc,以...

linux核心中的BUG 和 BUG ON

文章出處 在核心 中,經常會看到一些除錯函式,如bug,bug on等。使用前,先在核心配置中把kernel debug選上 make menuconfig kernel hacking kernel debug 作用 一些核心呼叫可以用來方便標記bug,提供斷言並輸出資訊。最常用的兩個是bug 和...

Linux核心中的list for each

在linux核心原始碼中,經常要對鍊錶進行操作,其中乙個很重要的巨集是list for each entry 意思大體如下 假設只有兩個結點,則第乙個member代表head,list for each entry的作用就是迴圈遍歷每乙個pos中的member子項。巨集list for each e...