C++服务器十三 C++深入学习

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Hanani_Jia/article/details/83246931

   我们这里是用C++这门语言来编写我们的服务器,这里我们在前期,先介绍一下C++这门语言里的一些语法。

  我们用到的编译器是g++或者clang。在ubuntu下可以用sudo apt-get install g++来安装。还要安装make和cmake。

   之后我们就开始介绍我们C++这门语言。C++是在C的基础上扩展的,所以和C语言区别并不是很大。我们这里就直接开始介绍。

    

我们在C++里边输出一个hello语句。然后通过我们的g++编译器来编译一下。

如果要是用我们平时使用的gcc的话会进行报错。因为gcc默认引入的东西要比g++少一些。

用g++编译生成之后就可以成功执行我们的文件。

然后我们再回来看我们的C++这门语言。

在C++中对于main函数只有上边两种定义的方法,有很多编译器会对他进行一些扩展,不过都不在标准当中。

    对于我们在C语言里边进行编程的时候,都知道,我们定义int或者char等一系列的函数类型的时候我们必须写返回值,如果不写的话,在某些编译器下会提出警告,但是我们在用C++的时候他不是必须的。我们上边得程序中并没有写我们的return语句。 在C++下边,如果我们没有写return语句的话系统会自动给我们插入一行代码

也就是exit(0);这一行代码。所以我们可以不用写return 0,这句话的意思和return是一样的。

那是为什么不需要我们写呢?

是因为在C++里边是有异常这个概念的,异常经常会使我们的函数,并不是在最后进行返回。

这时候我们再写return 0的时候并没有什么意义,因为在抛出异常的时候程序已经终止了。这时候编译器会自动给我们调用正确的处理方式来终结这个程序。

之后我们用makefile来给大家演示一下make这个应用。

用vim来创建一个简单的makefile

然后make一下

这里在写makefile的时候一定要注意一个低级问题,

当出现这个问题的时候,是因为我们的语句没有加tab键,也就是我们的编译语句g++......前边是必须要输入一个tab键的。

 这里我们写的makefile的意思是,我们想要生成一个hello,然后他所依赖的文件就是后边的hello.o文件,然后是通过下边的语句来生成这个文件,然后hello.o这个文件是哪来的呢?他是依赖于他后边的main.cpp文件,然后是通过下边的g++语句来生成的。Makefile可以想象成一个树,一个树干依附于很多小枝干,小枝干又依附于更小的枝干。

执行完之后,就可以看到我们当前文件夹下边多了hello.o和hello文件,这里看起来makefile很鸡肋,很复杂,我直接在shell里边输入g++命令不就可以了吗?为什么还要单独创建一个文件来生成。当你文件量比较大的时候makefile的优点就显现了出来。这里我们用一个稍微复杂的程序来演示一下。这时候我们定义两个文件一个.h一个.cpp

这是我们的.h文件里边只简单的声明一个函数。

这是我们的.cpp文件。里边对前边定义的函数进行了一个定义。

  

  然后把我们的main.cpp文件里边引用我们的头文件,然后调用我们对应的函数。这时候我们的程序就相对复杂了一些。

这时候,我们文件的依赖方式就多了一些,最终生成的helloworld文件依赖于两个.o文件,不同的.o文件又依赖于两个.cpp和.h文件。这样就比较复杂,但是最初的我就很纳闷,我这不是也一样吧这些执行语句都打了一遍么。但是如果你的代码有bug你在不断修改,当你每次修改完了之后都得编译一遍你的这么多依赖文件,如果说这时候你使用makefile那直接make一下就可以代替你输入那么多语句了。

 但是一般来说我们都很少手写makefile因为手写makefile是很脆弱的,当有大量文件的时候你的思路就不会变的那么清晰。并且文件依赖会有顺序,如果还没有生成这个文件你就依赖他使用它,那自然会有错误,所以我们经常会使用cmake等一系列工具来自动生成我们的makefile。

 

猜你喜欢

转载自blog.csdn.net/Hanani_Jia/article/details/83246931