C++学习之开发环境搭建篇(一)

摘要:
由于C++是一门非跨平台语言,其开发的程序编译生成的可执行文件,只能在相应的操作系统中被执行,离开此系统环境将无法执行。本文主要讲了四方面内容:C++与java开发环境的不同,标准C++学习过程,C++开发和应用方向,C++开发的一般思路,C++开发环境搭建。==============================================================================C++开发的一般思路接到一个需求或是问题,应该是1)提出解决方案或是设计出来2)通过定义标准C++相关的接口,以验证需求。

由于C++是一门非跨平台语言,其开发的程序编译生成的可执行文件,只能在相应的操作系统中被执行,离开此系统环境将无法执行。

主要原因是不同的操作系统,可执行文件的结构不同,最为常见的操作系统是有:MAC,windows,linux,unix。。。。

其中windows下为早期为DOS结构,之后随着窗口系统的发展改为PE,而linux,以及unix其可执行文件结构为elf。

本文只是刚开始,很多东西都不熟悉,因此在后续的过程中会对开发环境篇进行进一步详细说明和扩展,争取以后大多数的平台,以及该平台下常用的C++工具都会用。

本文主要讲了四方面内容:

C++与java开发环境的不同,

标准C++学习过程,

C++开发和应用方向,

C++开发的一般思路,

C++开发环境搭建。

==================================================================================

C++与java开发环境的不同

可以说,虽然不同操作系统下,可执行文件结构不同,但是从可执行文件生成,到被加载到内存,然后在内存中布局来看,其一般过程是相似的。

因此,在学习C++等非跨平台语言时,最好先有一个高层面的编程,然后针对不同的操作系统,有不同的开发和编译环境。如果与java进行比较如下:

开发语言 是否跨平台 linux下编译器+连接器 windows下编译器+连接器

C++ 非 gcc,g++等,很多 IDE是有TC,dev,其中最好的是VS,

java 是 linux版jdk,唯一,存在不同版本 windows版jdk,唯一,存在不同版本,IDE有eclipse,netbean等

上面只写了两个平台下的环境常见的,其实还有很多,限于本人知识有限无法一一列举。

不过,这里就个人而言,学习C++开发与应用,在windows下不选VS就是在装B,因为这是微软自己出的,还能有比他更好的?那就是在扯蛋。(跑题了)

而linux下可用IDE,也可用vim之类的。

===============================================================================

标准C++学习过程

学习的顺序最好是:

1)先在linux下用vim之类学习标准C++语法,这样书上怎么写,代码就是什么样的。

2)理解C++程序的编译和连接过程,

3)标准库的使用。

4)预定义(宏定义,文件引入。。。)

5)C++程序内存布局结构

6)生成可执行文件静态结构分析

7)程序从磁盘加载到内存开始,整个运行过程,以及最后被清理出内存,整个运行生命周期情况。

=============================================================================

C++开发和应用方向

当将标准C++语言学完,并明确理解以上7个问题后,可以开始进行编程方向的选择。

主要有以下几个方向:

1)系统编程

2)应用编程

3)网络编程

4)嵌入式开发

5)android底层和中间件开发

6)驱动开发

7)游戏工具开发

选择一个自己喜欢的方向,努力继续学习下去。

这个时候需要对操作系统和计算机组成原理有相对高的知识和原理层面的要求,因此需要花时间去补充相应的知识点。

==============================================================================

C++开发的一般思路

接到一个需求或是问题,应该是

1)提出解决方案或是设计出来

2)通过定义标准C++相关的接口,以验证需求。

3)对应完成程序要运行的平台,选择相应的IDE工具,基于平台的SDK工具,调用其中适合的API来实现接口,最终实现需求。

==============================================================================

C++开发环境搭建

在window下,xp及以下,最高为VS2010,win7可安装VS2012,要开发win8应用,最好是安装2012及以上VS

安装方法:直接安提示next即可实现。

在linux下,由于linux只是一类具有linux内核的系统的统称,具体有很多版本,随着发现不同版本之间出现相应的差异,但大部分的命令还是相同或相似的。

这里仅以centos,ubuntu两个版本来说明C++编辑,编译,连接,执行过程。

1)都天然自带gcc,g++,所以基本不用装了,最多需要更新下库版本,但标准库基本无变化,更新的多是系统或系统应用相关的库

2)编辑,命令行下:vim(vim的使用以后再说)

3)编译+连接,当前的编译器都是将连接器整合在一起的,因此,一行命令仅仅需要通过不同的参数来判断是只编译还是编译连接一起做了。

命令:g++ hello.cpp -o hello 或者 g++ -o hello hello.cpp

以上源文件和输出文件顺序无影响

4)执行,在当前目录下: ./hello 回车即可

如下图为vim编辑源文件:

C++学习之开发环境搭建篇(一)第1张

下图为编译源文件,执行生成可执行文件:

C++学习之开发环境搭建篇(一)第2张

===============================================================================

免责声明:文章转载自《C++学习之开发环境搭建篇(一)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇jsonp 跨域[转]在AutoCAD中根据MapInfo导出DXF文件块属性填充图斑下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C#调用C++dll,传指针释放内存问题

一、传入dll前,在C#中申请内存空间 c#里面的指针即 IntPtr 申请如下: IntPtr SrcImgData = Marshal.AllocHGlobal(length);  这种需要提前知道空间大小,否则无法确定空间大小,会导致dll内部处理时越界报错。 c#里面申请空间了,那么c++里面一般就是在这些空间里面操作了,一般不会重新分配内存,那么...

在c和c++中的求绝对值

在c语言中,根据类型的不同,求绝对值函数也不同。 int abs(intx) double fabs(double x) 求int类型用abs,求浮点类型用fabs。 而且这两个函数的所在头文件也不同: abs(): #include <stdlib.h> fabs(): #include <math.h> 但是,该问题在c++中...

为什么C++中空类和空结构体大小为1?

这篇文章是一篇译文,跟上一篇文章相呼应的,原文在这里。 对于结构体和空类大小是1这个问题,首先这是一个C++问题,在C语言下空结构体大小为0(当然这是编译器相关的)。这里的空类和空结构体是指类或结构体中没有任何成员。 在C++下,空类和空结构体的大小是1(编译器相关),这是为什么呢?为什么不是0? 这是因为,C++标准中规定,“no object s...

Python中第三方库的安装

网上的帖子挺多的,教你如何安装,安装第三方工具库的方法总共分为三类:Dos系统下pip命令;安装包下载安装;IDE集成环境下安装(Pycharm,Spyder……) http://www.jianshu.com/p/41a9c25273b1 一、pip命令 感觉这个最简单,但是需要注意几点 1、get-pip这个文件是否在您的Python目录中,Pytho...

Visual Studio 2010 C++ 属性设置基础

在 《Visual Studio 2010 C++ 工程文件解读》中提到了C++工程中可以进行用户自定义的属性设置,如何进行属性设置呢? 下面我们来了解一下 props 文件的基本规则: 1、在 PropertyGroup 元素中放置子元素就是定义属性,属性的值就是子元素的内容;例如 <PropertyGroup><OutputDr...

C++ 实参和形参

形参:在函数没有调用的时候,函数的形参并不占据实际的内存空间,也没有实质的值,——正如字面意思那样,“形式”参数,只是一个“形式。 实参:当函数被调用的时候,系统会为形式参数分配内存空间,然后用“实际”参数为形参赋值。 我们在使用函数的过程中,在函数中调用我们自己定义的函数的时候,会把实参传给一个形参类型和该实参相对应的函数——这个参数传递的过程,实际上是...