Нет, __
не означает эмуляцию, это не означает один из типов из стандарта ISO C.Реализации не хотят загрязнять глобальное пространство имен именами, такими как float80
, поэтому они используют имена, такие как __float80
и __int128
, потому что ISO C резервирует имена с двойным подчеркиванием для использования реализацией.
Iможно было бы предположить, что __float80
дает вам доступ к 80-битной функции с плавающей запятой даже при компиляции для MS Windows ABI, где long double
имеет тот же формат, что и double
.(IEEE binary64).
Вы можете думать о __float80
и __float128
как о специфических для реализации эквивалентах int64_t
вместо long
или long long
. на платформахкоторые имеют собственную 80-битную FP, __float80
не нуждается в эмуляции.
Для других целей __float80
может вообще не поддерживаться.