是否有可能向gcc写一个参数,以便它会认为它是G ++?
答案 0 :(得分:5)
你为什么要这样做?据我所知,唯一的区别是g++
另外将-lstdc++
传递给链接器,以链接C ++标准库。
因此,如果您将该选项传递给GCC,它应该将其转发给链接器,并且一切都应该没问题。但我真的没有理由这样做。只需使用g++
即可。
也就是说,我过去曾使用gcc
来编译C ++代码。当我有一堆文件,混合C ++和C代码时,我只是使用gcc
编译了所有内容,因为默认情况下g++
将.c
视为C ++代码,这会破坏构建时C代码使用new
之类的东西作为标识符。添加-lstdc++
总能很好地工作。
请参阅GCC手册页
编译C ++程序
C ++源文件通常使用后缀.C,.cc,.cpp,.CPP,.c ++,。cc或.cxx; C ++头文件经常使用.hh,.hpp,.H, 或(对于共享模板代码).tcc;和预处理的C ++文件使用后缀.ii。 GCC识别具有这些名称的文件并编译它们 作为C ++程序,即使您以与编译C程序相同的方式调用编译器(通常使用名称为gcc)。
但是,使用gcc不会添加C ++库。 g ++是一个调用GCC并将.c,.h和.i文件视为C ++源文件的程序 除非使用-x,否则代替C源文件,并自动指定与C ++库的链接。这个程序在使用时也很有用 预编译带有.h扩展名的C头文件,以便在C ++编译中使用。在许多系统上,g ++也安装了名为c ++。
编译C ++程序时,可以指定许多用于编译任何语言程序的命令行选项; 或对C和相关语言有意义的命令行选项;或仅对C ++程序有意义的选项。
答案 1 :(得分:3)
此documentation表示标记-x
以指定语言:
gcc -x c++ ...
答案 2 :(得分:1)
'gcc'是'Gnu Compiler Collection'。如果你传递一个C ++文件,它会调用C ++编译器'g ++'。
尽管如此,'gcc'和'g ++'对于c ++文件是不可互换的。 gcc使用一些我不记得的额外参数来运行g ++。
编译c ++文件时,我总是使用g ++