2023-04-26 c和c++语言的混合编程

g++是GNU C++ Compiler的缩写,是GNU计划中的一个C++编译器。与gcc类似,g++是自由软件,可以在多种操作系统上使用。它支持C++11、C++14、C++17等多个C++标准,并提供了丰富的C++特性支持,例如类、继承、多态、模板等。

gcc是GNU Compiler Collection(GNU编译器集合)的缩写,是一个包含了多种编程语言的编译器套件,其中包括C、C++、Objective-C、Fortran、Ada等语言的编译器。因此,我们通常用gcc来代指GNU的C编译器,而g++则是GNU的C++编译器。

在使用gcc编译C++代码时,实际上是通过调用g++编译器来完成的

当使用g++编译C代码时,实际上也是通过调用gcc编译器来完成的。这是因为gcc和g++实际上是同一个程序,只是根据命令行参数的不同,会在内部调用不同的编译器前端来支持C和C++的语言特性

c++编译器 name mangling

C++编译器会根据函数名和参数类型生成一个符号名,并将其用作函数的标识符。

void print(int num);
void print(double num);

编译器在生成符号名时会将它们分别命名为"print_int"和"print_double",这样可以区分这两个函数。
如果在C++中使用extern "C"修饰符将函数声明为C语言风格的函数,则不会进行名称修饰。例如:

extern "C" void print(int num);

这将抑制名称修饰,使得函数名在链接时和C语言的函数名一样。

gcc编译器可以同时编译C和C++代码

gcc编译器可以同时编译C和C++代码,因为gcc本质上是一个多语言编译器,可以支持多种编程语言。

在编译时,可以将C和C++文件混合编译,例如:

gcc -o program main.c file1.cpp file2.cpp

gcc会根据文件扩展名来判断文件类型,并使用相应的编译器进行编译。在链接时,gcc会将所有目标文件合并成一个可执行文件。

g++编译器也可以同时编译C和C++代码

g++编译器也可以同时编译C和C++代码,因为g++实际上是基于gcc进行扩展的,可以支持多种编程语言。和gcc一样,g++也会根据文件扩展名来判断文件类型,并使用相应的编译器进行编译。

在编译时,可以将C和C++文件混合编译,例如:

g++ -o program main.c file1.cpp file2.cpp

这个命令将编译一个程序,其中包含一个C文件和两个C++文件。g++会根据文件扩展名来判断文件类型,并使用相应的编译器进行编译。在链接时,g++会将所有目标文件合并成一个可执行文件。

gcc和g++都是GNU编译器套件

gcc和g++都是GNU编译器套件(GNU Compiler Collection,简称GCC)中的一部分,它们的主要区别在于所支持的语言不同。

gcc是一种通用的编译器,可以编译多种编程语言,包括C、C++、Objective-C、Fortran、Ada、Go等。gcc最初是作为C编译器而设计的,后来扩展支持了其他语言。gcc默认使用C语言规范进行编译,对于C++代码需要使用g++进行编译。

g++是基于gcc进行扩展而来的C++编译器,它可以编译C++和C代码,还支持更多的C++特性和语法,例如类、虚函数、运算符重载等。g++支持C++98、C++03、C++11、C++14、C++17、C++20等多个标准。

在编译C++代码时,使用g++可以更好地支持C++特性和语法,例如类、模板、STL等。在编译C代码时,gcc和g++的编译结果没有太大差异。因此,如果只编译C代码,使用gcc和g++没有明显的区别。但是,在编译C++代码时,应该使用g++而不是gcc。

需要注意的是,由于g++支持更多的C++特性和语法,因此在使用g++编译C++代码时,可能会遇到一些gcc不支持的特性,例如C++11新特性。此时,应该使用-gcc选项将g++退化为gcc编译器,以便编译不支持的C++特性。

  • C++标准库和STL(Standard Template Library):C++标准库和STL是C++语言的核心部分,包含了许多数据结构和算法。使用g++编译C++代码时,可以方便地使用C++标准库和STL。

  • 虚函数:虚函数是C++中的一种特性,用于实现面向对象编程中的多态性。使用g++编译C++代码时,可以使用虚函数来实现多态性。

  • 运算符重载:运算符重载是C++中的一种特性,用于自定义对象的运算符行为。使用g++编译C++代码时,可以方便地使用运算符重载来自定义对象的行为。

  • 模板:模板是C++中的一种特性,用于实现通用编程和泛型编程。使用g++编译C++代码时,可以使用模板来实现通用编程和泛型编程。

  • C++11新特性:C++11是C++语言的一个新标准,引入了许多新的特性和语法,例如自动类型推导、右值引用、Lambda表达式等。使用g++编译C++11代码时,可以方便地使用这些新特性和语法。

总的来说,g++支持更多的C++特性和语法,可以方便地编写现代化的C++代码。

c和c++文件界定

gcc默认会根据文件扩展名来判断文件类型

  • 对于以.c为后缀的文件,gcc会使用C编译器进行编译。
  • 对于以.cpp、.cxx、.cc等C++源代码文件为后缀的文件,gcc会使用C++编译器进行编译。
  • 对于以.S、.s、.asm等汇编语言源代码文件为后缀的文件,gcc会使用汇编编译器进行编译。
  • 对于其他未知文件类型的文件,gcc会尝试使用链接器对其进行处理。

gcc也可以通过指定参数来强制指定文件类型。例如,

  • 使用选项"-x"可以指定源文件类型,
  • 使用选项"-l"可以指定需要链接的库文件。
  • 可以使用"-x c"选项将源文件指定为C语言源文件。
  • 使用"-x c++"选项将源文件指定为C++源文件。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,874评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,102评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,676评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,911评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,937评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,935评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,860评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,660评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,113评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,363评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,506评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,238评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,861评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,486评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,674评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,513评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,426评论 2 352

推荐阅读更多精彩内容