Код: Выделить всё
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);
| ^~~~~~~
Код: Выделить всё
myfunc(AF_UNIX);
Изменить: Я намерен использовать только AF_UNSPEC, AF_INET, AF_INET6 . Другие константы, такие как AF_UNIX или AF_PACKET или все другие оставшиеся определенные семейства адресов, использовать не следует. Я мог бы выполнить эту проверку во время выполнения с обработкой ошибок, но было бы неплохо, если бы компилятор мог обнаружить нежелательное использование.
Подробнее здесь: https://stackoverflow.com/questions/784 ... mpile-time