Мне нужно указать короткий аргумент аргумента (например, -F
) как char
, так и char[]
константа в c-коде. Чтобы максимизировать повторное использование кода, я хочу объявить переменную, которая позволяет мне изменять значение в одном месте («буквальный» - не строгий разговор с строкой или char
буквально, а в смысле абстрактной концепции). Я бы предпочел решение, которое решает это исключительно в препроцессорных константах, функциях/макросах или исключительно в c-коде, чтобы дать хорошее объяснение, почему это нужно решить в смеси обоих.Как повторно использовать литерал в символе и односимвольной строковой константе?
Я попытался/проверил
- к
#define FOREGROUND_OPTION_VALUE 'F'
, который вызывает у меня проблемы, чтобы превратить его вchar[]
(как константы препроцессора) (написание макроса, который stringifies с#
вызывает'
кавычки, чтобы быть строковой, а - опустить
'
кавычки, которые оставляют меня с проблемой создания'
кавычки или создатьchar
другой путь. - @ ответ PedroWitzel, чтобы объявить
char[]
и используйте 0-йchar
для другой константы. Это нормально, но я бы предпочел создатьchar[]
изchar
, потому что это означает, что оба равны (в противном случае мне пришлось бы добавить утверждение времени компиляции, котороеchar[]
не больше1
).
Единственное, что имеет значение для меня, это обслуживание кода, ничего другого (например, стоимость обработки кода (во время компиляции или времени выполнения - не отразились интенсивно, если они могут быть и не заботятся)).
Сохранение одного символа данных целесообразно только в том случае, если (в буквальном смысле) нет необходимости в обработке кода. –