提问人:Duxa 提问时间:10/10/2018 最后编辑:MSaltersDuxa 更新时间:10/10/2018 访问量:330
包括 iostream 中断uint32_t定义 (C) [已关闭]
include iostream breaks uint32_t definition (C) [closed]
问:
编辑:请忽略这个问题。我意识到我是一个白痴,非常好和乐于助人的人指出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 位长,因为我正在做很多位操作。改用无符号 int 是否安全?
以下是我包括的所有内容的列表:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <iostream>
typedef unsigned __int32 uint32_t;
答:
5赞
bolov
10/10/2018
#1
宣布自己是非法的。别这样。C++有一个标准的。使用它。它在 中声明。uint32_t
cstdint
https://en.cppreference.com/w/cpp/types/integer
如果你在,那么你需要使用的标题是:C
stdint.h
https://en.cppreference.com/w/c/types/integer
评论
0赞
Duxa
10/10/2018
不过,这是 C,而不是 C++。同样适用?
4赞
bolov
10/10/2018
@Duxa,你是如何在 C ??? 中使用iostream
0赞
bolov
10/10/2018
@Duxa是的,它也适用于 C。除了标题是。stdint.h
0赞
Duxa
10/10/2018
是的,我是个白痴,我没有意识到我在看 C++ 文档。试图包含它以读取文件。需要找到一个 C 解决方案。谢谢。我知道 stdint.h,但认为它会包含太多不需要的东西,所以选择使用 typedef 代替。很高兴知道这是非法的。
评论
unsigned int
int
<iostream>
是一个 C++ 标头,你不能在 C 中使用它。<iostream>