#define ОпределениеНазвания(НАЗВАНИЕ) _с__Машинный__ ## НАЗВАНИЕ
#define Определение2Названия(НАЗВАНИЕ1, НАЗВАНИЕ2) \
ОпределениеНазвания(НАЗВАНИЕ1 ## _ ## НАЗВАНИЕ2)
#define НФлагИнициализации(НАЗВАНИЕ1, НАЗВАНИЕ2) \
Определение2Названия(НАЗВАНИЕ1, НАЗВАНИЕ2) ## флаг_инициализации
../Стороннее/webdriverxx/src/include/webdriverxx/detail/to_string.h:120:42: warning: multi-character character constant [-Wmultichar]
120 | result.push_back('//');
| ^~~~
In file included from ../Исходники/Машинный/Определения/Типы Данных/../Шаблон Перечислений.hpp:4,
from ../Исходники/Машинный/Определения/Типы Данных/Базовые.h:100,
from ../Исходники/Машинный/Определения/Типы Данных.h:12,
from ../Исходники/Машинный/Определения/Определения.h:15,
from ../Исходники/Машинный/Определения.h:5,
from ../Исходники/Точка Входа.cpp:3:
../Исходники/Машинный/Определения/Типы Данных/../Уловки Кода.hpp:30:46: error: pasting ")" and "флаг_инициализации" does not give a valid preprocessing token
30 | Определение2Названия(НАЗВАНИЕ1, НАЗВАНИЕ2) ## флаг_инициализации
Почему не компилируется макрос?
#define НФлагИнициализации(НАЗВАНИЕ1, НАЗВАНИЕ2) \ Определение2Названия(НАЗВАНИЕ1, НАЗВАНИЕ2) ## флаг_инициализации
error: pasting ")" and "флаг_инициализации" does not give a valid preprocessing token
Определение2Названия
, а потом к результату будет приклеен флаг_инициализации
, в то время как на самом деле сначала препроцессор делает подстановку НАЗВАНИЕ1
и НАЗВАНИЕ2
и приклеивает флаг_инициализации
к скобочке, после чего рапортует тебе о том, что полученный результат выглядит не очень.## флаг_инициализации
внутрь Определение2Названия
.