C++ 编译和概述

g++编译工具

linux编译的四个阶段

在Linux下编译程序分为以下4个阶段:

  1. 预处理:编译处理宏定义等宏命令(eg:#define)——生成后缀为“.i”的文件   
  2. 编译:将预处理后的文件转换成汇编语言——生成后缀为“.s”的文件   
  3. 汇编:由汇编生成的文件翻译为二进制目标文件——生成后缀为“.o”的文件   
  4. 连接:多个目标文件(二进制)结合库函数等综合成的能直接独立执行的执行文件——生成后缀为“.out”的文件

    Linux下执行gcc与g++编译C++文件的差别

    后缀为.c的,gcc把它当作是C程序(cc/cpp才判定为C++源程序),而g++当作是c++程序

gcc无法进行库文件的连接,即无法编译完成步骤4;而g++则能完整编译出可执行文件。(实质上,g++从步骤1-步骤3均是调用gcc完成,步骤4连接则由自己完成),如以下:

1
2
3
4
5
6
7
  gcc -E 执行到步骤1,只处理宏命令,需要用重定向生成文件

  gcc -S 执行到步骤2,生成文件.s

  gcc -c 执行到步骤3,生成文件.o

  g++ 分别编译于连接 .cc文件与.o文件

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//getinfo .cpp -- input and output
#include<iostream>

int main() {
using namespace std;

int carrots;

cout << "How many carrots do you have?" << endl;
cin >> carrots;
cout << "Here are two more.";
carrots = carrots + 2;

cin.get();
cin.get(); //添加两句,第一句按enter键位输入数字,第二条让程序暂停
//FIXME the next line concatenates output
cout << "Now you have" << carrots << " carrots." << endl;
return 0;
}

cin >> carrots;
从键盘输入数值赋给变量carrots

cout << "Now you have" << carrots << " carrots." << endl;
使用cout拼接,endl换行。

类class

类是c++种面向对象编程OOP的核心概念之一

  • 类是用户定义的一种数据类型
  • 定义类,需要描述它能够表达什么信息和可对数据执行那哪些操作
  • 类定义描述的是数据格式及其用法,而杜希昂是根据数据格式规范创建的实体

    例如cout是一个ostream类对象,cin是一个istream类对象,都是在iostream中定义的。

函数

函数创建C++程序的模块,分为两种:有返回值的和无返回值的。
例如:

1
2
3
4
#include<cmath>

double x;
x = sqrt(6.25);
打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2019-2020 sunwengang
  • Powered by Hexo Theme Ayer
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信