ошибка: «uint16_t» не объявлен?

у меня есть код

#include <emmintrin.h>
#include <stdio.h>

void print128_num(__m128i var)
{
    uint16_t *val = (uint16_t*) &var;
    printf("Numerical: %i %i %i %i %i %i %i %i \n",
           val[0], val[1], val[2], val[3], val[4], val[5],
           val[6], val[7]);
}
int main(void)
{
    __m128i a = _mm_set_epi32(4, 3, 2, 1);
    __m128i b = _mm_set_epi32(7, 6, 5, 4);
    __m128i c = _mm_add_epi32(a, b);

    print128_num(c);

    return 0;
}

и я получаю сообщение об ошибке, когда uint16_t не объявлено. Я использую GCC с MINGW.

Вот полная ошибка.

||In function 'print128_num':|
|6|error: 'uint16_t' undeclared (first use in this function)|
|6|error: (Each undeclared identifier is reported only once|
|6|error: for each function it appears in.)|
|6|error: 'val' undeclared (first use in this function)|
|6|error: expected expression before ')' token|

person pandoragami    schedule 02.07.2013    source источник


Ответы (1)


Вам нужно включить stdint.h или inttypes.h, чтобы получить uint16_t.

person Carl Norum    schedule 02.07.2013
comment
Я мало использую C, поэтому для меня это ново. - person pandoragami; 03.07.2013
comment
Должен быть кто-то, использующий MSVC без доступа к заголовкам (поскольку они были добавлены в C99, а MSVC поддерживает только C89), или что-то в этом роде. - person Jonathan Leffler; 03.07.2013
comment
Чудаки. Вопрос помечен как GCC, и в нем говорится, что я использую GCC в теле. - person Carl Norum; 03.07.2013
comment
Да, знаю. Я тоже понятия не имею, почему минус. Я попытался найти ответ на этот вопрос с помощью Google, и все, что я получил, было кучей тем, связанных с Linux, в которых людям предлагалось использовать sudo для установки основных утилит Linux. Кто-то тоже хотел закрыть тему. Он единственный вокруг, как он. - person pandoragami; 03.07.2013
comment
В стороне: просмотр руководства Intel по переходу с 32-битной на 64-битную версию, software.intel.com/sites/default/files/m/d/4/1/d/8/, я обнаружил, что uint16_t является типом, определяемым архитектурой для Unix. - person Dale; 01.06.2019
comment
Я столкнулся с этой же проблемой. Другой разработчик использовал Visual Studio, а я использую mingw. Не удалось скомпилировать его последний толчок. Это было причиной. добавление #include stdint.h исправило это. - person Metric Crapton; 27.04.2020