簡體   English   中英

此行指針解釋的宏

[英]Macro for pointer explanation of this line

#define P2VAR(ptrtype, memclass, ptrclass) ptrclass ptrtype * memclass

誰能解釋這個聲明?

當涉及到宏時,C 預處理器只是一個簡單的搜索和替換機器。 (實際上,並沒有那么簡單。)

因此,如果您編寫示例(從Raymond 發現的 URL無恥地復制):

P2VAR( uint8, SPI_VAR_FAST, SPI_APPL_DATA ) Spi_FastPointerToApplData;

它將被替換為(此過程通常稱為“它將擴展為”):

SPI_APPL_DATA  uint8 *  SPI_VAR_FAST  Spi_FastPointerToApplData;

現在您需要知道SPI_APPL_DATASPI_VAR_FAST是如何定義的。 這些似乎也是宏,可以使用不同的編譯器和/或目標系統。

由於鏈接頁面中的第一個示例顯然就是這個,一些微控制器的示例,讓我們假設您想要使用另一個編譯器和目標系統。 這應該是您的 PC 的標准 C 編譯器作為目標,因為,比方說,您將模擬您的程序。 然后你將提供這個宏定義:

#define P2VAR(ptrtype, memclass, ptrclass) ptrtype *

它忽略參數memclassptrclass並擴展為:

uint8 * Spi_FastPointerToApplData;

所以這個宏是一種不影響源代碼的方法,即使你改變了編譯器或目標系統。 這就是該頁面標題為“編譯器抽象”的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM