最近我檢查了遺留項目(在10年前開發)。什麼是位置編譯需要
我碰到了#pragma DATA_SECTION
。幾乎每個全局變量都會添加 到特定的數據部分。 不知道爲什麼全局變量專門移動到DATA_SECTION?
在最近幾天,當我們開發一個C應用程序時,我們並不擔心數據段和所有。
那麼現在使用位置編譯指示的原因是什麼,現在不使用 ?
最近我檢查了遺留項目(在10年前開發)。什麼是位置編譯需要
我碰到了#pragma DATA_SECTION
。幾乎每個全局變量都會添加 到特定的數據部分。 不知道爲什麼全局變量專門移動到DATA_SECTION?
在最近幾天,當我們開發一個C應用程序時,我們並不擔心數據段和所有。
那麼現在使用位置編譯指示的原因是什麼,現在不使用 ?
#pragma
用於編譯器做超出C標準範圍的事情。如果代碼是用另一個不能識別#pragma
的編譯器編譯的,則該行將被忽略。
#pragma DATA_SECTION NAME
與#pragma DATA_SECTION DEFAULT
一起用於某些嵌入式系統編譯器,當您需要在特定存儲器部分(如特定地址)中分配變量時。本示例中的NAME
是內存段的自定義名稱。
(它類似於__declspec(section "NAME")
,你會發現在其他的編譯器。)
我懷疑這是飛思卡爾/ NXP的CodeWarrior,其中#pragma DATA_SECTION NAME
的意思是:把所有靜態存儲時間讀/寫變量部分NAME
從這裏開始。
你會這樣做的原因取決於應用程序。在嵌入式系統中,您需要將變量放置在特定地址是非常常見的。
是的。 Iam在嵌入式應用程序中看到它。需要知道爲什麼變量放置在數據部分 –
@ Balaganesh.V我們不是千里眼。閱讀文檔並詢問作者。這都是來自這裏的猜測。 – Olaf
@ Balaganesh.V如果你不明白爲什麼,你不需要它。當你第一次需要它時 - 你會明白爲什麼 –
這很大程度上取決於您正在編譯的平臺。這種編譯指示有時甚至在今天仍然是嵌入式代碼所必需的。 – user694733
告訴我們更多關於此代碼用於的平臺。 –
是的。它是一個具有統一內存模型的嵌入式平臺(TMS320 DSP)。我可以知道爲什麼它只需要嵌入式平臺... –