由U BOOT CMD命令想到的

2021-06-20 06:44:32 字數 904 閱讀 3606

在uboot當中,各個命令是通過u_boot_cmd這個巨集來定義出來的,其本質其實理解起來也很簡單,不過今天也從中學到了一點東西

先來看uboot當中關於u_boot_cmd這個巨集的定義:

/* 這是定義乙個結構的屬性,將其放在.u_boot_cmd這個段當中,相當於.data/.bss這些段 */

#define struct_section  __attribute__ ((unused,section (".u_boot_cmd")))

/* 巨集定義,用於定義乙個命令 */

#define u_boot_cmd(name,maxargs,rep,cmd,usage) / 

cmd_tbl_t __u_boot_cmd_##name struct_section =

這樣一來,凡通過u_boot_cmd定義的cmd_tbl_t變數會全部被放在.u_boot_cmd段當中(可以看uboot的鏈結指令碼***.lds),具體怎麼放是鏈結器的工作。

這裡要看的是##name和#name這兩個操作.##name將字元直接跟在後面, #name會將name這個字元中以「..."的形式放置。

例如:定義乙個命令boot

u_boot_cmd(boot, 0, 0, fun, "boot ***");

展開以後會變成:

cmd_tbl_t __u_boot_cmd_boot __attribute___((unused, section(".u_boot_cmd"))) =

大部分基本不變,將struct_section展開了,還將##name換成了boot, 將#name換成了"boot"。應該不難看出##/#的作用吧。

從上面來看,我們是不是可以在程式執行時去定義乙個變數呢??我們可以通過##***來定義乙個變數,然後還可以通過這種形式來使用它。有興趣研究一下,今天先到這裡吧

由PageRank想到的

首先來看看什麼是pagerank pagerank 技術 通過對由超過 50,000 萬個變數和 20 億個詞彙組成的方程進行計算,pagerank 能夠對網頁的重要性做出客觀的評價。pagerank 並不計算直接鏈結的數量,而是將從網頁 a 指向網頁 b 的鏈結解釋為由網頁 a 對網頁 b 所投的...

由Cannot find file 想到的

記錄一下 今天除錯程式,單步真機除錯,我日,程式一步一步走,盡然和程式根本就對不上號。特別奇怪。思考一下,應該是工程太多太雜,自己有不小心,讓它們混在一起打架了。於是繼續,把其它所有工程都關了,只開啟乙個,清理了所有工程。與此工程有關的直接搜尋清理,一直以來覺得沒有必要,但這次是為了保險起見。編譯工...

由VBA想到的

這段時間由於工作原因研究了一下 vba,感覺完全是如墜五里霧中,主要原因是對 atl乃至對 com技術的應用不了解。簡單說一下 vba,用過 office 系列軟體的朋友都知道它,用 vb語法來控制文件生成過程,很不錯。不只是 office,很多其它優秀軟體都有 vba模組,比如 autocad 這...