Если мы обращаемся к документации для -Wpedantic
, мы можем отметить следующее:
Педантические предупреждения также отключены в выражении, следующем за __extension__
.
Быстрый эксперимент показывает, что это позволяет определять переменные, как и ожидалось, даже под флагом:
__extension__ __int128 hge{};
Но, конечно, это довольно громоздко, если мынамеревался использовать этот тип часто.Способ сделать это менее сложным - использовать псевдоним типа.Хотя здесь мы должны быть осторожны, атрибут __extension__
должен предшествовать полному объявлению :
__extension__ typedef __int128 int128;
Вы можете видеть, что он работает здесь .
Альтернативный подход, который следует вашей первоначальной мысли, заключается в использовании диагностических прагм вокруг псевдонима типа:
namespace my_gcc_ints {
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
using int128 = __int128;
#pragma GCC diagnostic pop
}
Что также неплохо работает .