Включить определение iostream breaks uint32_t (C)

Изменить: Пожалуйста, не обращайте внимания на этот вопрос. Я понял, что я идиот и очень хорошие и полезные люди отметили, что iostream - это не C, а библиотека C++.

Я столкнулся с очень странной проблемой.

У меня есть полностью рабочая программа (около 1000 строк). Мне необходимо

#include <iostream> 

Когда я делаю так, typedef из uint32_t прерывается.

Определяется как таковой

typedef unsigned __int32 uint32_t;

Я использую Visual Studio 2017. И эта ошибка дает

\vc\tools\msvc\14.15.26726\include\cstdlib(19): ошибка C2061: синтаксическая ошибка: идентификатор 'noexcept'

и когда я наведу курсор мыши, теперь подчеркну uint32_t, сказано следующее:

Переменная uint32_t "uint32_t" не является именем типа

комментируя только строку

#include <iostream>

программа компилируется и запускается, как и ожидалось.

Что дает?

Побочный вопрос. Причина, по которой я использую uint32_t, заключается в том, чтобы гарантировать, что моя переменная имеет длину 32 бита, поскольку я выполняю много битовых манипуляций. Было бы безопаснее использовать unsigned int?

Вот список всего, что я в том числе:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <iostream>

typedef unsigned __int32 uint32_t;

1 ответ

Декларирование uint32_t ты сам незаконный афаик. Не делай этого. C++ имеет стандартную. Используйте это. Это объявлено в cstdint,

https://en.cppreference.com/w/cpp/types/integer

Если вы находитесь в C тогда заголовок нужно использовать stdint.h вместо:

https://en.cppreference.com/w/c/types/integer

Другие вопросы по тегам