g++编译工具
linux编译的四个阶段
在Linux下编译程序分为以下4个阶段:
- 预处理:编译处理宏定义等宏命令(eg:#define)——生成后缀为“.i”的文件
- 编译:将预处理后的文件转换成汇编语言——生成后缀为“.s”的文件
- 汇编:由汇编生成的文件翻译为二进制目标文件——生成后缀为“.o”的文件
- 连接:多个目标文件(二进制)结合库函数等综合成的能直接独立执行的执行文件——生成后缀为“.out”的文件
Linux下执行gcc与g++编译C++文件的差别
后缀为.c的,gcc把它当作是C程序(cc/cpp才判定为C++源程序),而g++当作是c++程序
gcc无法进行库文件的连接,即无法编译完成步骤4;而g++则能完整编译出可执行文件。(实质上,g++从步骤1-步骤3均是调用gcc完成,步骤4连接则由自己完成),如以下:
1 | gcc -E 执行到步骤1,只处理宏命令,需要用重定向生成文件 |
Tips
- 后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序,注意,虽然c++是c的超集,但是两者对语法的要求是有区别的。
- 编译阶段,g++会调用gcc,对于c++代码,两者是等价的,但是因为gcc命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接,为了统一起见,干脆编译/链接统统用g++了,这就给人一种错觉,好像cpp程序只能用g++似的。
安装使用g++
除了code blocks, Vs code,可以更简单的使用gcc g++编译c和c++语言。
安装:
sudo apt-get install g++
编译:
g++ getinfo.cpp 生成a.out,使用./a.out执行
或者
g++ getinfo.cpp -o getinfo 生成getinfo,使用./getinfo执行
input and output
1 | //getinfo .cpp -- input and output |
cin >> carrots;
从键盘输入数值赋给变量carrots
cout << "Now you have" << carrots << " carrots." << endl;
使用cout拼接,endl换行。
类class
类是c++种面向对象编程OOP的核心概念之一
- 类是用户定义的一种数据类型
- 定义类,需要描述它能够表达什么信息和可对数据执行那哪些操作
- 类定义描述的是数据格式及其用法,而杜希昂是根据数据格式规范创建的实体
例如cout是一个ostream类对象,cin是一个istream类对象,都是在iostream中定义的。
函数
函数创建C++程序的模块,分为两种:有返回值的和无返回值的。
例如:
1 |
|