我有几个问题。
1) 什么是
libc++
和libstdc++
?
2)它们有什么区别?
3)它们可以互换吗?
4)这是编译器应该实现的东西吗?
5) 我什么时候应该使用其中一种?
1) 什么是 libc++ 和 libstdc++ ?
它们是C++标准库的实现。
2)它们有什么区别?
它们是完全不同的实现。
3)它们可以互换吗?
是的,您应该能够互换使用它们。 (但是您不能轻松地在同一个程序中使用两者。)
5) 我什么时候应该使用其中一种?
您不必担心这一点。您的代码应该与any标准库实现一起使用。
libstdc++ 是 GNU c++ 标准库实现。
libc++ 是 LLVM/clang c++ 标准库实现。
即使使用 clang 编译,也经常使用 libstdc++ (gnu)(在 Linux 上)。
libc++ (clang) 存在的一个主要原因是 libstdc++ (gnu) 是 GPL,因此 Apple 无法发布它,因此您可以将 libc++ 视为非 GPL libstdc++。