2016-09-22 48 views
1

我的編譯器被忽略:gcc中的#pragma等價物是什麼?

#pragma DATA_SECTION(..., "iram_init"); 

#pragma CODE_SECTION(..., ".icode"); 

哪裏..​​.是一個功能。

這在運行程序時會導致分段錯誤。 我想這是因爲這是gcc編譯器的不正確語法?什麼是等效的?

感謝

(背景:這是在raspian樹莓PI)

+1

什麼編譯器支持這些編譯指示?你想達到什麼目的? – fuz

+0

我得到的代碼有這些。我試圖運行這個程序來測試一些我不太瞭解的東西。 –

+0

檢查它可能對你有幫助http://stackoverflow.com/questions/9716637/what-is-the-use-of-pragma-code-se-and-data-section –

回答

3

等效是:

__attribute__((section(".icode"))) void fct1(int toto) { ... } 
__attribute__((section("iram_init"))) int fct2(void) { ... } 

__attribute__((section(".var"))) int myvar; 

照顧你的鏈接腳本(俗稱」 .LD 「用gnu工具):必須定義部分並映射到正確的內存

+0

變量是否一樣? –

+0

是的變量是相同的(請參閱我的編輯) – Garf365

+0

'__attribute __((section(..)))'應該與變量和函數的定義,而不是原型或'extern'聲明。 (我認爲你已經做對了,但我更願意明確這一點) – Garf365

相關問題