2017-07-06 158 views
1

我是C++的新手,但之前曾与C合作过。什么是CRT的C++等价物?

用C编写的程序必须与包含C函数(例如:printf())的CRT(在Windows中,它是文件libcmt.lib)链接。

但我想知道,是否存在“C++ RT”(与CRT相对)这样的事情,我的意思是C++函数和类在哪里存储(例如:std::ofstream)。我还有另外一个问题,如果我使用了一些C函数(例如:printf()),我的C++程序将与CRT和“C++ RT”链接,还是“C++ RT” “包含CRT?

+0

我记得在Windows之前C连接[CRT](https://marketplacecdn.yoyogames.com/images/assets/3060/screenshots/8173_original.gif?1449578408)s ;-) – chux

+0

@chux是这个肥皂泡沫? o_O – iehrlich

+0

许多标准的C++库代码存储在头文件中。但是,是的,您将链接libcpmt * .lib以获取非模板代码和模板特化。 –

回答

11

这取决于您正在使用的C++ standard library的确切实施。

GCC附带libstdc++和你的程序对libstdc++*.so*libstdc++*.dll*自动链接(文件名可以根据分布有所不同,打造的选项和版本)

Clang/LLVM附带在Linux和OS X,但使用libc++libc++*.so* Windows上的Visual C++库。

Microsoft Visual C++针对取决于配置(link)的libcp*.libmscp*.lib(和相关.dll)中的一个链路。

请注意,通常可以使用非默认的标准库实现。例如,Clang可以在Linux上使用libstdC++或libC++。 Intel compiler使用Windows上的Microsoft库和Linux上的libstdC++。还有一些实现与特定编译器无关,如STLport

相关问题