Есть ли способ использовать __int128_t с Android NDK?

Есть ли способ использовать __int128_t с Android NDK?

Я пытался использовать набор инструментов GNU 4.9, но независимо от того, как я пытаюсь, я получаю следующую ошибку: error: '__int128_t' was not declared in this scope

-std=gnu++11 конечно включен.


person Tamas    schedule 12.09.2014    source источник


Ответы (1)


Есть ли способ использовать __int128_t с Android NDK?

Я так не думаю. __int128_t эмулируется и доступен только на 64-битных платформах. На данный момент он недоступен на Android, который является 32-разрядной платформой. См. Эмулируется ли __int128_t арифметика GCC, даже с SSE? .

Вы можете проверить доступность __int128_t, обнаружив наличие макроса __SIZEOF_INT128__. Если макрос определен и значение равно 16 или более, доступны 128-битные типы. См. также 128-битное целое — бессмысленная документация? в списке рассылки GCC.

person jww    schedule 13.09.2014
comment
Именно потому, что он эмулируется, я подумал, что он должен быть доступен и на 32-битных платформах. - person Tamas; 13.09.2014
comment
он будет доступен на ARM64, MIPS64 или x86_64. Эмулируемые операции @Tamas поддерживаются только для значений, которые в два раза превышают ширину регистра. - person phuclv; 20.02.2015
comment
@phuclv — Вы помните, какой NDK впервые предоставил поддержку 64-битной версии? - person jww; 30.08.2018
comment
Я не использую NDK, но первый gcc с __int128_t, который я могу подтвердить, это 4.1.2 - person phuclv; 30.08.2018
comment
64-битная поддержка была введена для Android-21, Lollipop, который был выпущен в ноябре 2014 года. Корреспондент НДК, р. 10, стал официальным в июле того же года. Я не уверен, что тогда было __int128_t. - person Alex Cohn; 30.08.2018