#c #types #namespaces
#c #типы #пространства имен
Вопрос:
Я хотел бы переопределить встроенный тип bool
внутри пространств имен и классов библиотеки, потому что они должны работать по-другому, но я хотел бы сохранить имя bool
: ex::bool
, ex::false
, ex::true
. Но мой компилятор не позволяет мне этого сделать, я попробовал что-то вроде этого :
namespace ex {
typedef uint8_t bool;
const uint8_t false = 0;
}
Я также попытался добавить префикс bool
и false
с ex::
внутри определения, чтобы подчеркнуть тот факт, что он находится в ex, но это не работает. Что я мог бы сделать, чтобы иметь ex::bool
?
Ответ №1:
Что я мог бы сделать, чтобы иметь
ex::bool
?
Ты ничего не можешь сделать. bool
и false
имеют значение, установленное спецификацией языка, и являются внутренними ключевыми словами. Вы не можете изменить их значение больше, чем вы можете изменить значение 0
, if
или while
.
Выбор других имен (таких как Bool
и False
) — ваш единственный вариант.
Комментарии:
1. Могу ли я сохранить их значение, но поместить их в свое пространство имен для согласованности?
2. @linternetsansfil — Нет. Ключевые слова являются зарезервированными символами в языке. Вы не можете перенести их в другую область или действительно сделать с ними что-либо, кроме использования по назначению.