我知道c ++代码应该用g ++编译和链接,而不是gcc。 但是为什么gcc仍然可以编译c ++源代码,尽管源代码中有很多c ++关键字。
顺便说一句,我发现我甚至可以用gcc和所有c ++代码构建一个共享库。为什么呢?
答案 0 :(得分:9)
g ++是gcc,它只是自动链接到标准C ++库。
如果你的g ++代码依赖于标准库(std
命名空间中的东西),你可以
-lstdc++
)答案 1 :(得分:4)
来自GCC手册页:
For any given input file, the file name suffix determines what kind of
compilation is done:
file.c
C source code which must be preprocessed.
.
.
.
file.h
C, C++, Objective-C or Objective-C++ header file to be turned into
a precompiled header.
file.cc
file.cp
file.cxx
file.cpp
file.CPP
file.c++
file.C
C++ source code which must be preprocessed. Note that in .cxx, the
last two letters must both be literally x. Likewise, .C refers to
a literal capital C.
它没有做的是自动链接到C ++标准库。最简单的就是在那时使用g++
。
答案 2 :(得分:2)
您可以使用-lstdc ++链接。