Лучше использовать макрос препроцессора, который вы можете определить в строке компиляции. Поэтому измените код на:
#ifndef N_MAC
#define N_MAC 10
#endif
const int N = N_MAC;
, а затем скомпилируйте его с помощью:
g++ test.cpp -DN_MAC=$x -o test.o
Блок $ifndef
обеспечивает значение по умолчанию, если вы не используете -DN_MAC
для его переопределения.
Соответствующий параметр в профиле подключения NetworkManager называется ipv6.method
.
До недавнего времени disabled
не было реализовано (, что делается сейчас ). Если у вас есть последний NetworkManager и вы установили метод «отключено», он работает так, как ожидалось.
Существует также настройка ignore
. В этом случае NetworkManager оставляет это ядру. Вам нужно будет установить соответствующие значения sysctl самостоятельно.
Если графический интерфейс называет его «отключенным» при настройке «игнорировать», это ошибка. Я думаю, что об этом уже сообщалось (не уверен ). Кроме того, это зависит от того, какой графический интерфейс вы используете (выглядит как gnome -control -center ). Если графический интерфейс не поддерживает это, используйте nmcli для установки свойства.
Причина, по которой существует "игнорирование", заключается в том, что NetworkManager уже давно предоставил IPv6 ядру. Этот режим делает это, но, возможно, это не очень полезно.
Потребовалось много времени, чтобы реализовать «отключено», потому что это не беспокоило кого-то достаточно, чтобы исправить это. В настоящее время это исправлено.
Адрес IPv6 — это локальный адрес ссылки -, который настраивается автоматически. Программы настройки сети его не трогают. Если вас беспокоит адрес (, он действителен только в локальной сети ), чтобы избавиться от него, вам нужно отключить IPv6 в ядре.