Этот вопрос возник из вопроса ранее сегодня на тему bignum библиотек и GCC конкретных хаков на языке C В частности, были использованы эти две декларации:.Что НКУ __attribute __ ((режим (XX)) на самом деле
typedef unsigned int dword_t __attribute__((mode(DI)));
на 32-битных системах и
typedef unsigned int dword_t __attribute__((mode(TI)));
на 64-битных системах.
Я предполагаю, что с учетом этого является расширением языка C, что не существует никакого способа для достижения какой бы она достигает в действующих (C99) стандартах.
Итак, мои вопросы просты: правильно ли это предположение? И что делают эти утверждения для основной памяти? Я думаю, что в результате у меня есть 2*sizeof(uint32_t)
для dword
в 32-битных системах и 2*sizeof(uint64_t)
для 64-битных систем, правильно?
Только то, что мне было нужно, +1. Разве нет «стандартного» способа обойти это, я так понимаю? то есть объявить 128-битный тип? В его текущем использовании мы можем 'dword = word << 1' безопасно и легко; Я бы предпочел не заменять это функцией и т. Д., Если я могу помочь. –
@Ninefingers: В GCC вы можете использовать '__int128', я верю: http://gcc.gnu.org/onlinedocs/gcc/_005f_005fint128.html. –
@Ninefingers: GCC поддерживает типы расширений '__int128_t' и' __uint128_t' (по крайней мере, на 64-битных платформах, не уверен в 32-битных целях) –