Предположим, что у меня есть константа, определенная в файле заголовка
#define THIS_CONST 'A'
Я хочу записать эту константу в поток. Я делаю что-то вроде:
char c = THIS_CONST;
write(fd, &c, sizeof(c))
Однако для краткости и ясности я хотел бы сделать следующее:
write(fd, &THIS_CONST, sizeof(char)); // error
// lvalue required as unary ‘&’ operand
Кто-нибудь знает какой-либо макро/другой трюк для получения указателя на литерал? Я хотел бы что-то, что можно использовать следующим образом:
write(fd, PTR_TO(THIS_CONST), sizeof(char))
Примечание. Я понимаю, что могу объявить свои константы как статические константные переменные, но тогда я не могу использовать их в операторах switch/case. то есть.
static const char THIS_CONST = 'A'
...
switch(c) {
case THIS_CONST: // error - case label does not reduce to an integer constant
...
}
Если существует способ использования константной переменной в метке case?