2012-08-16 162 views
9

C中"#pragma section <XYZ>"有什麼用?C中「#pragma section <XYZ>」的用法是什麼?

我所遇到的C代碼文件,其中使用了以下類型: -

#define XYZ "ITEM 26.G03" 

#pragma section <XYZ> 

其中XYZ是:#define XYZ "ITEM 26.G03"

我需要使用"#pragma section"

+0

http://stackoverflow.com/questions/9716637/what-is-the-use-of-pragma-code-section-and-data-section – codejammer 2012-08-16 06:14:49

+0

你可以接受答案,如果它可以幫助你。未來的遊客也將從中受益。 – Jaguar 2012-10-05 05:47:34

回答

4

節帶來了一些交代.obj文件中的一節。
有關更多詳細信息,請參閱MSDN

代碼和數據在目標文件的各個部分中生成,由鏈接器組合成一個可執行文件,最終位於目標內存的特定位置。默認部分是預定義的並具有某些屬性。 部分編譯指示可用於更改默認屬性,定義新節,並控制將代碼和變量分配給特定節,並與鏈接器命令文件一起控制其位置。

#pragma section定義了一個section類,並且可選地定義了類中的一個或兩個部分。 section類控制放置在類實例中的變量和代碼的尋址和可訪問性。

7

#pragma指令是特定於實現的指令,它是向編譯器提供附加信息的標準方式。這個指令的格式如下:

#pragma name 

如果預處理器能夠識別指定的「名」,它執行他們的立場的任何行動,或傳遞到編譯器的信息。如果c程序不支持「名稱」,則忽略

例如gcc編譯器接受列出的編譯指示列表here

對於#pragma sectionGCC的文件說:

部分( 「部分-name」)通常,編譯器將 生成的文本部分中的代碼。但是,有時您需要額外的 部分,或者您需要某些特殊功能才能出現在 特殊部分。 section屬性指定函數 位於特定部分。例如,聲明:

 extern void foobar (void) __attribute__ ((section ("bar"))); 

將函數foobar放在條形截面中。

某些文件格式不支持任意部分,因此 部分屬性在所有平臺上都不可用。如果您需要將模塊的全部內容映射到特定的部分,請考慮使用鏈接器的設施來代替 。

更多關於那here