2017-09-04 64 views
0

最近我檢查了遺留項目(在10年前開發)。什麼是位置編譯需要

我碰到了#pragma DATA_SECTION。幾乎每個全局變量都會添加 到特定的數據部分。 不知道爲什麼全局變量專門移動到DATA_SECTION?

在最近幾天,當我們開發一個C應用程序時,我們並不擔心數據段和所有。

那麼現在使用位置編譯指示的原因是什麼,現在不使用 ?

+2

這很大程度上取決於您正在編譯的平臺。這種編譯指示有時甚至在今天仍然是嵌入式代碼所必需的。 – user694733

+1

告訴我們更多關於此代碼用於的平臺。 –

+0

是的。它是一個具有統一內存模型的嵌入式平臺(TMS320 DSP)。我可以知道爲什麼它只需要嵌入式平臺... –

回答

3

#pragma用於編譯器做超出C標準範圍的事情。如果代碼是用另一個不能識別#pragma的編譯器編譯的,則該行將被忽略。

#pragma DATA_SECTION NAME#pragma DATA_SECTION DEFAULT一起用於某些嵌入式系統編譯器,當您需要在特定存儲器部分(如特定地址)中分配變量時。本示例中的NAME是內存段的自定義名稱。

(它類似於__declspec(section "NAME"),你會發現在其他的編譯器。)

我懷疑這是飛思卡爾/ NXP的CodeWarrior,其中#pragma DATA_SECTION NAME的意思是:把所有靜態存儲時間讀/寫變量部分NAME從這裏開始。

你會這樣做的原因取決於應用程序。在嵌入式系統中,您需要將變量放置在特定地址是非常常見的。

+0

是的。 Iam在嵌入式應用程序中看到它。需要知道爲什麼變量放置在數據部分 –

+1

@ Balaganesh.V我們不是千里眼。閱讀文檔並詢問作者。這都是來自這裏的猜測。 – Olaf

+0

@ Balaganesh.V如果你不明白爲什麼,你不需要它。當你第一次需要它時 - 你會明白爲什麼 –

相關問題