【发布时间】:2019-03-15 00:53:04
【问题描述】:
编辑:请忽略这个问题。我意识到我是个白痴,非常友善和乐于助人的人指出 iostream 不是 C 而是 C++ 库。
我遇到了一个很奇怪的问题。
我有一个完整的程序(大约 1000 行)。我需要
#include <iostream>
当我这样做时,uint32_t 的 typedef 会中断。
是这样定义的
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;
【问题讨论】:
-
恐怕
unsigned int没有保证大小,就像普通的int一样。 -
<iostream>是 C++ 头文件,不能在 C 中使用。 -
呜呜我是个白痴。谢谢 :) 谷歌搜索的东西没有意识到我在看 C++ 的东西 :)
-
您不应该在 C 代码中包含
<iostream>,因为它是 C++ 标头,无论如何都不是 C 标准的一部分。 -
致“有帮助”添加 C++ 标签的人:这隐藏了问题。标题正确地指出这是一道 C 题。