[英]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_Type
和DIO_PORT_Even_Interruptable_Type
是DIO_PORT_Even_Interruptable_Type
的別名,則只需定義PORT_t _port;
並使用bool _portIsEven;
跟蹤它是奇數還是偶數bool _portIsEven;
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.