2015-10-17 59 views
-2

我碰到這條線在GNU C編譯器的STM8S MCU代碼...什麼@字符做在GNU C預處理器

#define DEF_8BIT_REG_AT(NAME,ADDRESS) volatile unsigned char NAME @ADDRESS 

這是定義,定義的內部寄存器的宏中央處理器。但是,我似乎無法找到任何有關使用@字符的說明。我已經看到#@一起使用#@來引用一個字符,但從來沒有@它自己。 我很感激,如果有人能夠解釋在這個宏中使用@字符。請不要評論,如果你猜測....只有當你知道肯定。另外,我知道他們正在嘗試做什麼,所以不要試圖向我解釋C預處理的基礎知識。我是一位擁有30多年經驗的軟件工程師。即我只是對宏中使用@字符感興趣。 請儘可能提供鏈接。 預先感謝您。

+1

此代碼從哪裏來? –

+0

從他們的網站下載的ST工具。它是定義CPU內部寄存器的包含文件。使用mingw gcc編譯器構建。 –

回答

1

它不是預處理器的一部分,與預處理器無關。它是C編譯器的擴展,可讓您在特定內存位置放置符號。這不是標準的C.事實上,我很確定它是而不是 gcc的一部分(這就是你所說的「gnu C編譯器」的意思嗎?)我已經看到它在其他編譯器中使用過,比如IAR或uVision。

例如見this question

+0

非常感謝。這爲我解答。有更多的便攜式方式來做到這一點,但如果它的工作....再次感謝。 –