我定義這個宏:多方論證宏定義錯誤
#define DEF_CONCAT(a, b) a ## b
#define _internal_RCC(gpio, io) DEF_CONCAT(RCC_GPIO, gpio)
#define _internal_IO(gpio, io) DEF_CONCAT(GPIO, io)
#define IO_CFG_OUTPUT(gpio) {rcc_periph_clock_enable(_internal_RCC(gpio));gpio_set_mode(gpio, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, _internal_IO(gpio));}
而且我想調用這個:
IO_CFG_OUTPUT(LED_STATE);
LED_STATE
被定義爲:#define LED_STATE C,12
但是,當我運行我的程序,編譯器告訴我:
In file included from inc/Robot.hpp:6:0,
from src/Robot.cpp:1:
src/Robot.cpp: In member function 'void Robot::setup()':
inc/IODefines.hpp:13:19: error: 'C' was not declared in this scope
#define LED_STATE C,12
^
我做錯了什麼?來源
'#define LED_STATE C,12'這似乎是錯誤的,你打算做什麼? –
是的,但是爲什麼?它應該使用C作爲字母在IO_CFG_OUTPUT中通過DEF_CONCAT將它結合到RCC_GPIOC中。怎麼樣? –
你也可以在'gpio_set_mode(gpio,..)'中使用它,'C'是否存在? gpio_set_mode是一個宏嗎? – Jarod42