Константы, определенные макросом C++, в качестве аргумента, проверяемого во время компиляцииC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Константы, определенные макросом C++, в качестве аргумента, проверяемого во время компиляции

Сообщение Anonymous »

То, что я имею в виду, обычно решается с помощью перечисления:

Код: Выделить всё

enum AddrFam { af_unspec, af_inet, af_inet6 };
void myfunc(AddrFam) {}
void myfunc(int) {}

int main() {
myfunc(af_unix);
return 0;
}
Это приводит к ошибке компилятора:

Код: Выделить всё

error: ‘af_unix’ was not declared in this scope
15 |     myfunc(af_unix);
|            ^~~~~~~
Это ожидаемо. Но как я могу добиться того же с предопределенными константами в верхнем регистре? Я не могу использовать уже предопределенные константы AF_UNSPEC, AF_INET, AF_INET6 в перечислении, поэтому

Код: Выделить всё

myfunc(AF_UNIX);
компилируется без ошибок.
Изменить: Я намерен использовать только AF_UNSPEC, AF_INET, AF_INET6 . Другие константы, такие как AF_UNIX или AF_PACKET или все другие оставшиеся определенные семейства адресов, использовать не следует. Я мог бы выполнить эту проверку во время выполнения с обработкой ошибок, но было бы неплохо, если бы компилятор мог обнаружить нежелательное использование.

Подробнее здесь: https://stackoverflow.com/questions/784 ... mpile-time
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Метод IJsonValue.GetObject конфликтует с макросом windows.h
    Anonymous » » в форуме C++
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Является ли предупреждение -Wc++-compat об идентификаторах, еще не расширенных макросом, ложным срабатыванием?
    Anonymous » » в форуме C++
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Является ли предупреждение -Wc++-compat об идентификаторах, еще не расширенных макросом, ложным срабатыванием?
    Anonymous » » в форуме C++
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Проблемы с макросом Python, встроенным в лист
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Проблемы с макросом Python, встроенным в лист
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»