1. 程式人生 > >C語言實現C++的類

C語言實現C++的類

per class pre out ++ del init lock gpo

  

typedef struct _s_gpio GPIO;
typedef struct _s_gpio{
    uint32_t gpiox;
    uint32_t gpio_pinx;
    void (*init)(GPIO *gpio);
    void (*toggle)(GPIO *gpio);
}GPIO;

static void _s_gpio_init(GPIO *gpio)
{
	 rcu_periph_clock_enable(LED1_GPIO_CLK);
    gpio_init(gpio->gpiox, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ,gpio->gpio_pinx);
}

static void _s_gpio_toggle(GPIO *gpio)
{
    GPIO_OCTL(gpio->gpiox) ^= (uint32_t)gpio->gpio_pinx;
}

GPIO new_outport(uint32_t gpiox,uint32_t gpio_pinx)
{
    GPIO temp;
    temp.gpiox = gpiox;
    temp.gpio_pinx = gpio_pinx;
    temp.init = _s_gpio_init;
    temp.toggle = _s_gpio_toggle;
    temp.init(&temp);
    return temp;
}

	 GPIO led;
	 led = new_outport(GPIOF,GPIO_PIN_6);
    while(1)
    {
        delay_1ms(500);
        led.toggle(&led);
    }

  這樣實現C++的類,可以簡化代碼的重復,也可以讓代碼結構更晰。

C語言實現C++的類