簡體   English   中英

從內部if語句(C)聲明全局變量

[英]Declare global variable from inside if statement (C)

我試圖從if語句中聲明一個變量,因為基於條件,該變量將具有不同的類型以供以后使用。

uint8_t gpio_flag(PORT_t * port, uint8_t pin) {
    if(getType(port)) {     // odd
        DIO_PORT_Odd_Interruptable_Type * _port = port;
    }
    else {                  // even
        DIO_PORT_Even_Interruptable_Type * _port = port-1;
    }

    return ((_port->IFG & (1<<pin))==1);
}

其中Odd_int_type和Even_int_type都是具有IFG成員的結構。 如果奇數,getType僅返回1,如果偶數則返回0。

但是,_port的范圍在if語句內,因此它不起作用。 有解決方法嗎?

嘗試針對我正在使用MSP432P401R微控制器的項目執行此操作。

當您在if范圍內聲明變量時,由於范圍限制,在變量之外將無法訪問該變量。 假設您只想根據奇/偶端口指向不同的數據,則只需要將_port的范圍擴大到所需的范圍即可。 如果您嘗試使用不同的變量訪問相同的內存,則可以使用結構的union來實現。 無論如何,您將需要增加變量的范圍。

您不能在當前范圍之外聲明任何非外部的東西。 您可以在函數,文件或全局范圍內聲明_port變量,然后在gpio_flag函數中設置其值。 如果DIO_PORT_Odd_Interruptable_TypeDIO_PORT_Even_Interruptable_TypeDIO_PORT_Even_Interruptable_Type的別名,則只需定義PORT_t _port; 並使用bool _portIsEven;跟蹤它是奇數還是偶數bool _portIsEven;

暫無
暫無

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

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