Я определил этот макрос:Multi-Довод ошибка Макроопределение
#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