C語言實現C++的類
阿新 • • 發佈:2018-01-04
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++的類