如何在不使用 std 的情况下使用int32_t?
How am I able to use int32_t without without using std?
这是我的代码:
#include <iostream>
int main()
{
int32_t i = 5;
std::cout << "i: " << i << 'n';
}
这是输出:
$ clang++ -std=c++11 -pedantic -Wall -Wextra foo.cpp && ./a.out
i: 5
这是我的问题:
C++标准似乎在std
命名空间中定义了cstdint
中的int32_t
。
在我的代码中,我既没有包含cstdint
也没有使用std
命名空间。那为什么编译器不抱怨呢?
名称int32_t
也出现在 C 库标头stdint.h
的全局范围内。这可能使其在C++中也全局可见。
[标题]部分说:
。每个标头CNAME的内容与 C 标准库中指定的相应标头名称.h的内容相同。 但是,在C++标准库中,声明(在 C 中定义为宏的名称除外(位于命名空间 std 的命名空间范围内。未指定这些名称(包括通过 [thread] 和 [depr] 在 [language.support] 中添加的任何重载(是否首先在全局命名空间范围内声明,然后通过显式 using-声明注入到命名空间 std 中。
该标准还有一个笼统的声明:
C++标头可能包含其他C++标头。
因此,通过包含<iostream>
,您可以保证看到流对象,但也可能会碰巧访问其他一些库功能。
由于这些间接包含未指定,因此结果因实现而异。因此,程序应始终包含它所需的所有标头,以便移植到不同的编译器。
相关文章:
- 在没有太多条件句的情况下,我如何避免被零除
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 在未初始化映射的情况下,将值插入到映射的映射中
- 是默认情况下分配给char数组常量的值
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 如何在不产生任何垃圾的情况下获得C中的像素
- 在已经使用Git的情况下减少编译时间
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 如何在没有信号的情况下从C++执行QML插槽
- 如何在不知道向量大小的情况下输入向量内部的向量?
- 为什么在某些情况下不写入此文件?
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 在没有Xcode的情况下在Mac捆绑包中嵌入框架
- UE4-如何在给定4个屏幕坐标的情况下缩放纹理或材质
- 为什么需要复制构造函数,在哪些情况下它们非常有用
- 在C++中如何在没有pow的情况下进行基础计算
- 松弛原子与无同步情况下的记忆连贯性
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 我是c ++的新手,你能解释一下在这种情况下的指针吗
- 在没有参数列表的情况下使用模板名称"Event"无效,模板问题