所以我今天才注意到,我不需要在Macbook上声明sort
的名称空间。
以下代码编译器在我的Mac上,但在我的Linux工作站(使用香草g++
)上却没有,
#include <iostream>
#include <ctime>
#include <vector>
int main()
{
std::vector<int> vec{1,2,3}; //needs std:: to compile on both mac and linux
sort(vec.begin(), vec.end()); //doesn't need std:: to compile on mac
}
这是我的g++
编译器的信息,该编译器可以毫无问题地编译上述代码。
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/c++/4.2.1
Apple LLVM version 10.0.1 (clang-1001.0.46.4)
Target: x86_64-apple-darwin18.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
XCode是否在幕后做一些事情,使sort函数在不声明其名称空间的情况下可用?它在做什么,为什么要这样做呢?