繁体   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