文档章节

嵌入式开发之C++基础学习笔记1--综合比较HelloWorld示例

来啊糟老头子
 来啊糟老头子
发布于 2012/12/16 23:42
字数 1336
阅读 689
收藏 10

选择C++的理由:

1)C++语言是由C语言扩充而来。它是一门混合型的语言,既支持传统的结构化程序设计,又支持面向对象的程序设计,这使得C++非常流行。它在编程中支持面向对象。因此,它比C更适合人们的思考方式,并且比C要安全、可靠、有效。但是它并不像Java那样全面实现类的使用,这使得它很灵活,能够适应多种场合的需要。

2)C++是编译语言,性能良好,效率更高。它不像Java、PHP、ASP等语言,需要在运行时转换为机器码,或者读一条语句执行一条。它直接被编译为机器可识别的机器码。

3)C++编写的程序独立性好。只要C++编译时产生的机器码不依赖外部的动态链接库,C++就可以在不需要安装额外程序的情况下,移动到运行同样操作系统的其他机器和微处理器上。而移动Java程序时需要先安装Java运行期库。这是C++语言成功流行的一个重要原因。

4)C++语言应用极为广泛。尤其在底层编程和系统级编程上更是C++的传统优势应用。在数据库和多媒体方面,C++又以其卓越的稳定性而赢得了荣誉。


与C编写代码不同,C++关于HelloWorld这么一个简单程序有很多变化

第一个例子:

jellonwu @jintao :~/Desktop$ vim test1.cpp
#include <iostream>
using namespace std;
int main()
{
        cout<<"Hello world!"<<endl;
}


jellonwu @jintao :~/Desktop$ g++ test1.cpp -o test1
jellonwu @jintao :~/Desktop$ ./test1
Hello world!

第二个例子:

jellonwu @jintao :~/Desktop$ vim test2.cpp
/*第一部分*/
//这是一个演示程序,它从命令行读入一个整数,然后加 1 再输出
/*第二部分*/
#include <iostream>
using namespace std;
/*第三部分*/
int main()
{
int x;
cout<<"输入整数:";
cin>>x;
x=x+1;
cout<<"x=x+1="<<x<<endl;
return 0;
}
jellonwu @jintao :~/Desktop$ g++ test2.cpp -o test2
jellonwu @jintao :~/Desktop$ ./test2
输入整数:12
x=x+1=13


C++程序一般包含三部分:
1)第一部分:注释部分
2)第二部分:预处理部分
既在编译前要处理的工作。这里是以#include 说明的头文件包
含代码#include <iostream>,它指示编译器在预处理时,将文件 iostream 中的代码嵌入到
该代码指示的地方。其中#include 是编译指令。头文件 iostream 中声明了程序需要的输入
输出操作的信息。
3)第三部分:主要部分

例子三:

#include <iostream>
using namespace std;
int main()
{
cout<<"Hello world!HAHA"<<endl;
int x;
int y;
int z;
cout << "输入第 1 个数:";
cin >> x;
cout << "输入第 2 个数:";
cin >> y;
cout << "输入第 3 个数:";
cin >> z;
cout << z << endl;
cout << y << endl;
cout << x << endl;
return 0;
}

总结

C++与C的HelloWorld程序的几点不同:

1)stdio.h 是 C 语言的输入输出支持头文件,iostream.h是C++的输入输出头文件。
2)printf 语句是 C 语言中的输出语句,C++中的输出语句则使用 cout 流
关于控制端输入,C语言中是scanf(),C++中是cin>>
3)关于main函数,C语言中main()函数可为void或者int类型
在C++中g++编译器要求main必须为int类型,因为 ISO C++ 不允许声明无类型的‘main’
有些编译器并不要求 main 函数一定返回值,例如 Visual C++
4)关于头文件导入
C导入:#include <stdio.h>
C++导入:#include <iostream>
         using namespace std;
注意C++导入的这两条必须同时存在,否则系统会提示 cin 和 cout 找不到。
5)关于文件名,C源文件名.c,C++源文件名.cpp
5)关于编译器,C语言常用gcc,而C++语言常用g++,这些命令都在linux自带,与gcc用法基本一样 【g++ 源文件 -o 执行文件】

关于gcc和g++

gcc and g++分别是GNU的c & c++编译器
gcc/g++在执行编译工作的时候,总共需要4步
  ⒈预处理,生成.i的文件[预处理器cpp]
  ⒉将预处理后的文件转换成汇编语言,生成文件.s[编译器egcs]
  ⒊由汇编变为目标代码(机器代码)生成.o的文件[汇编器as]
  ⒋连接目标代码,生成可执行程序[链接器ld]


C++中的常见保留字

_asm abstract bool break case
catch while char class const
continue default delete do double
else enum explicit extern false
float for friend goto if
inline int long namespace new
operator private protected public struct
class register return short signed
sizeof static switch template this
throw true try typedef union
unsigned using virtual void volatile
保留字是系统预留的符号,这些符号已经被赋予特定的意义。所以程序员只能直接使
用它们而不能修改其定义。例如,保留字 int 和 float 分别被用来表示整型数据类型和浮点型


特别注意:
You cannot have two main functions in the same project. Put them in separate projects or rename one of the functions and call it from the other main function.
You can never have more than one main() function in your project since it is the entrypoint, no matter what the parameter list is like.
在一个C++项目里面有且只能有一个main()方法,这是强制规定,否则编译报错:multiple definition of `main'

© 著作权归作者所有

来啊糟老头子
粉丝 117
博文 17
码字总数 31765
作品 0
朝阳
技术主管
私信 提问
加载中

评论(1)

f
fancy11
顶一个先。。。
请问嵌入式开发不是用c吗??用c++可以吗??用的多不多??
linux下c和c++学习中的迷惑?求过来人解惑

先自我介绍一下,本人是普通学校的研究生一枚。非985,211,专业嵌入式方向,导师基本不管也不懂 研一开始接触linux已经整整一年了,在这一年里看了不少书,现在感觉学的东西很乱, 感觉什么都...

corcpp
2013/08/03
1K
3
4-C++远征之起航篇-学习笔记

c++教程起航篇 我们会讲C++那些事,C++与C语言的关系。 C++诞生于贝尔实验室。 C++之父: 本贾尼·斯特劳斯特卢普 C++社区排行榜 最新排行,c++排名第三,Python排名第四 C++语言的应用领域:...

天涯明月笙
2018/07/20
0
0
C语言编程学习项目实战:图书管理系统

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
2018/06/04
0
0
如何自学成为C/C++程序员大牛

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
2018/05/11
0
0
计算机C语言/C++编程学习:和QT零距离接触的意义是什么

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
2018/06/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

centos7命令行和图形界面的相互切换

最近安装了centos7,发现在命令行和图形界面的相互切换命令上,与centos以往版本有很大不同。 1,centos7默认安装后,跟其他版本一样,启动默认进入图形界面; 2,在图形化桌面,右击鼠标,选...

无名氏的程序员
11分钟前
5
0
对称的二叉树

请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 boolean isSymmetrical(TreeNode pRoot) { if (pRoot == null) ...

Garphy
20分钟前
2
0
快速失败 (fail-fast) 和安全失败 (fail-safe) 的区别是什么

一:快速失败(fail—fast) 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加、删除、修改),则会抛出Concurrent Modification Exception。 原理:迭代器在...

Bb进阶
22分钟前
5
0
golang 数据库与JSON解析一起 用空格分割

type Stocks struct { Id string `xorm:"varchar(64) pk" json:"id"` Name string `xorm:"varchar(64)" json:"name"` StockNum str......

zdglf
26分钟前
4
0
恨天诀——第一集 第五章

天似穹庐,笼盖四野。 静静矗立的天柱峰,像一把长剑,直插云霄。山南显得格外阴冷,萧瑟。 “龙儿,何为天道?”一长一少两人默默并排而立,长者问道。 良久,少年回答:“父亲,恕孩儿驽钝...

Kerwin_zZ
32分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部