簡體   English   中英

這種變量聲明是什么意思?

[英]What's the meaning of this kind of variable declaration?

我看到了一種我無法清楚理解的使用 C 聲明變量的方式(因為它只是整個嵌入式系統程序的一小部分,我試圖在下面更簡單地重現它)。

#include <stdio.h>

typedef volatile unsigned char XBYTE;
#define var (* (XBYTE * )(0x0100))

int main()
{
    printf("Hello World\n");
    printf("the address of var is %x\n",&var);

    return 0;
}

我很確定該片段是關於將在地址 100h 分配的“var”,但問題是我無法通過指針判斷它是如何工作的。

另外,這樣申報有沒有潛在的問題?

謝謝

是的,代碼可以編譯並且有效。

volatile關鍵字意味着該變量可以在不顯式寫入的情況下更改其值,例如定時器寄存器。 所以XBYTE是一種引用unsigned char的類型,它是volatile ,此外。 但是,它並不是指實際的 memory 位置,它只是 unsigned char 類型的任何此類易失性寄存器的 typedef。 這就是#define的用武之地。如果發生故障,它將int 值0x0100 常量轉換為指向XBYTE 的指針。 然后在第二步中,它推遲該指針以允許訪問該 memory 位置。 所以我們最終找到了一種訪問 volatile uchar @ 0x100 的方法。

作為備注,這是讓 C 代碼在沒有運行時開銷的情況下引用顯式常量 memory 地址的唯一方法。

暫無
暫無

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

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