Есть ли способ 'charify'ing что-то с использованием препроцессора C/C++? Вы можете «stringify», выполнив:Препроцессор C/C++ - 'Charify'
#define STRINGIFY(x) #x
Итак, будет ли способ «charify'ing используя те же принципы?
Есть ли способ 'charify'ing что-то с использованием препроцессора C/C++? Вы можете «stringify», выполнив:Препроцессор C/C++ - 'Charify'
#define STRINGIFY(x) #x
Итак, будет ли способ «charify'ing используя те же принципы?
Что-то вроде:
#define CHARa() 'a'
#define CHARb() 'b'
#define CHARc() 'c'
// ...
#define CHARIFY(x) CHAR ## x()
CHARIFY(a)
+1, но, к сожалению, работает только для буквенно-цифровых символов. –
, если у вас есть лучшее стандартное решение, которое было бы более конструктивным ... – Joky
Если вы считаете это уродливым, подумайте о том, что вам нужно для операторов. 'CHARIFY (%)' должен расширяться до чего-то вроде 'PREFIX% SUFFIX' без конкатенации маркера (поскольку% не может быть частью токена). Тем не менее последовательность токенов 'PREFIX a SUFFIX' (опять же без конкатенации) также должна быть действительной и постоянным выражением. – MSalters
'(#x [0])'? (длина) – user3175411
По крайней мере, GCC и, вероятно, Clang обрабатывают '(" string literal "[0])' как константное выражение. – user3175411
@ user3175411, но, к сожалению, C не относится к нему как к постоянному выражению – ouah