2012-10-14 111 views
2

here什麼是.*意味着在c宏?c。宏中的`.`和`*`是什麼意思?

583 #define INITCALLS              \ 
584   *(.initcallearly.init)           \ 
585   VMLINUX_SYMBOL(__early_initcall_end) = .;      \ 
586   *(.initcall0.init)            \ 
587   *(.initcall0s.init)            \ 
588   *(.initcall1.init)            \ 
589   *(.initcall1s.init)            \ 
590   *(.initcall2.init)            \ 
591   *(.initcall2s.init)            \ 
592   *(.initcall3.init)            \ 
593   *(.initcall3s.init)            \ 
594   *(.initcall4.init)            \ 
595   *(.initcall4s.init)            \ 
596   *(.initcall5.init)            \ 
597   *(.initcall5s.init)            \ 
598   *(.initcallrootfs.init)           \ 
599   *(.initcall6.init)            \ 
600   *(.initcall6s.init)            \ 
601   *(.initcall7.init)            \ 
602   *(.initcall7s.init) 
603 
+14

這不是C,它是一個鏈接器腳本。 – Mat

回答

5

它是一個鏈接器腳本。部分合並和放置由鏈接器完成。程序員可以通過鏈接器腳本文件控制各部分的合併方式以及它們在哪些位置放置在內存中。你提到的文件就是這樣做的。

。(點)指的是鏈接部分,並使用通配符*代替單獨指定包含相同命名鏈接部分的多個文件名。

請參閱:http://sources.redhat.com/binutils/docs-2.10/ld_3.html