1. 程式人生 > >C++伺服器十三 C++深入學習

C++伺服器十三 C++深入學習

   我們這裡是用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。