"built-in" C++函数
"built-in" functions in C++
我是C++初学者,所以如果答案很明显,它可能是我正在寻找的那个。我正在阅读此线程中的第二个响应并感到困惑。
#include <algorithm>
#include <cassert>
int
main()
{
using std::swap;
int a(3), b(5);
swap(a, b);
assert(a == 5 && b == 3);
}
我没有得到的是"这只是一个定义的函数。我的意思是,为什么它不是直接内置的",但没有必要include
一个新的库,所以它不是内置的吗?std 库是否会自动导入(如果是,为什么命名空间不自动设置为 std)?
"这只是一个定义的函数。我的意思是,为什么它不是直接内置的",但没有必要导入新的库,所以它不是内置的吗?std 库是否会自动导入(如果是,为什么命名空间不自动设置为 std)?
嗯,defined function
它的意思是,很可能这个函数已经预先编写好了,并在库中定义,它不是直接内置的,可能是因为它是这样设计的;语言中只包含核心要素,其他一切都在一个库中,所以程序员可以导入他们想要的东西。
通过内置,通常它是一个关键字,如 for
或 while
.
不,std 不会自动导入,因为它的设计使程序员可以选择他们想要的命名空间,例如自定义命名空间或 std。自动拥有 std 不好的一个例子是:
假设你自动定义了 std,那么你想做using namespace foo;
,现在如果 foo 也有功能cout
,你会遇到一个巨大的问题,比如说你想这样做;
// code above
cout << "Hello, World" << endl;
// code below
编译器如何使用哪个命名空间函数? 默认值或您的foo
命名空间cout
?为了防止这种情况,没有设置默认命名空间,由程序员决定。
希望对您有所帮助!
这只是一个定义的函数。我的意思是,为什么它不是直接内置的",但没有必要包含一个新的库,所以它不是内置的吗?
根据定义,C++库是C++的一部分。但是,它不是核心语言的一部分。C++是一门巨大的语言。使编译器立即知道语言的每个角落和缝隙会使编译器变得巨大且加载缓慢。相反,其理念是保持核心较小,并使程序员能够通过#including
头文件来扩展功能。指定他们需要什么。
为什么命名空间不自动设置为 std?
这基本上会使各种非常常见的单词成为关键字。你不应该使用的单词列表(关键字,C中的全局函数,POSIX或Microsoft保留的单词,...)已经很大了。将C++标准库放在命名空间 std 中是一项功能。将所有这些名称放在全局命名空间中将是一个巨大的错误功能。
在你的代码中,你有这样的行:
using std::swap;
所以对swap
的调用不需要std::
. 对于assert
,它被定义为宏,所以它也不需要std::
。如果不使用 using
,那么除了宏之外,您还必须使用 std::
来引用标准C++库提供的函数和对象。
标准C++库通常在编译程序以创建可执行文件时链接到程序中。从这个角度来看,您可能会认为它是"内置的"。但是,术语"内置"通常意味着编译器将单词swap
视为关键字,而这里的情况并非如此。 swap
是在 algorithm
头文件中定义的模板函数,assert
是在 cassert
中定义的宏。
命名空间是一种便利,允许按名称轻松对软件的某些部分进行分区。因此,如果要定义自己的swap
函数,可以将其放入自己的命名空间中。
namespace mine {
template <typename T> void swap (T &a, T &b) { /*...*/ }
}
它不会与标准或定义交换而没有命名空间的某些库发生冲突。
- 创建具有 new in 函数和"this is nullptr"异常的对象
- std::complex<> in C++ 数学特殊函数:技术规范或提案
- 类中的数组变量C++导致"was not declared in this scope"实现文件的一个函数中错误,但在构造函数中不会导致错误
- 在 Metal 着色器代码中,如何定义函数的 in/out 参数变量?
- 为什么我们需要 & in 绑定成员函数?
- 数组在 C++ 中不使用 static in 函数时不会修改
- 可以循环访问未'built in'对象的 Fbx属性
- 在使用 In Order 遍历成员函数时引发异常(堆栈溢出)时出现问题
- 使用多重性函数与 in C++ 联合两个链表
- c++:在函数返回过程中,"catching reference in value"与"catching value in value"有什么区别?
- 为什么C++ std::min_element 库函数接受采用布尔返回类型的函数对象的函子,而不是像 C 中那样的 in
- 传递自定义函数类型时的'incompatible types in assignment'
- "built-in" C++函数
- 将""Treat wchar_t as built-in type""设置为"否"是否会影响 C# 互操作?
- 为什么C++成员函数使用 & in 参数?
- :<built-in>1:2: 警告:使用 C++0x 长整型整数常量 [-Wlong-long]
- 开发中的过剩C++错误"redeclaration of C++ built-in type `short'"
- 切换到 GCC 4.8 后,Eclipse 未更新 "built-in" Android NDK 项目的包含路径
- <built-in> 预处理器输出中C++什么?
- std::thread::thread(<未解析的重载函数类型>) in Qt