<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 【知識精講】C++程序是如何開發的 ## Part1 我們已經知道,程序語言可以分為**機器語言**,**匯編語言**和**高級語言** 三個層次——現階段我們人類開發者能夠直接編寫的是匯編語言和高級語言,絕大多數情況下用到的還是高級語言。 高級語言的語句是由一些英語單詞、數學公式等構成的——對于程序員來說,這些語句相對來說更淺顯易懂,但是機器本身卻只能識別 000 和 111 構成的二進制代碼(也叫**機器碼**)。那么,高級語言是怎么變成二進制代碼的呢?這中間就要有一個過程——需要一個“翻譯器”來幫助我們完成這些事情。 典型的機器碼如下圖所示——這里使用十六進制數表示二進制代碼: ![](https://res.jisuanke.com/img/upload/20160712/cf2c2dc0f25c12f9cd8197d6e06ec20adb96134f.png) ## Part2 具體地說,我們自己用高級語言寫的程序,稱為高級語言源程序,而將其轉化成二進制代碼之后的程序,稱為目標程序——它已經是完全的二進制機器指令了,這個過程稱為編譯。那么,是不是有目標程序就能直接運行了呢?我們需要考慮到,如果一個程序比較大的話,那么它可能要有多個模塊來協作——就算是簡單地向屏幕上輸出一個“Aloha Oe”,你也依然需要調用系統庫里定義好的輸出功能模塊。 所以,我們需要把所有需要的模塊都合并在一起,才能構成一個可以執行的程序——這個就是程序的鏈接過程,鏈接完成之后,才會得到一個可以執行的程序。那么,你肯定要問:編譯和鏈接過程該怎么進行呢?有一些專門的軟件可以完成這個過程,這些軟件被稱為**編譯器(Compiler)** 和**鏈接器(Linker)**。 在編譯和鏈接的過程中,都會對程序中的錯誤進行檢查——只有代碼準確無誤的程序才能編譯成功。如果代碼本身有錯誤的話編譯器就會報錯,如下圖所示。但是需要注意的是,編譯通過,并不代表程序本身是完全正確的——你仍然需要通過調試,確認程序可以正確地運行,才能說你的程序是準確無誤的。 ![](https://res.jisuanke.com/img/upload/20160712/9c28db60af3b1f2ae6beaaf5b385ad0395ddcf48.png) ## Part3 除此之外,還有另一種與之類似的軟件,稱為**解釋器**——在介紹什么是“解釋器”之前,我們首先要知道“編譯型語言”與“解釋型語言”的差別。 所謂“編譯型語言”,指的是源程序的代碼寫好之后,編譯器直接把高級語言的源代碼編譯成二進制的機器碼,執行的時候直接運行機器碼就行了——這門課程學習的 C++ 語言,是一種典型的編譯型語言;而“解釋型語言”則與之不同,寫好的代碼不會馬上就被翻譯成機器碼,而是先保存成源程序的代碼文件——等到運行的時候,這些語句才會**由解釋器來一條一條地解釋執行**——很多腳本語言,比如 Python,都屬于解釋型語言。 一般而言,編譯型語言擁有更高的運行效率,而解釋型語言的可移植性更好——此外,還有一些介于兩者之間的語言,比如JAVA/C#,就是先編譯成某種“中間代碼”然后再交由不同平臺的虛擬機解釋執行的。 ## Part4 整個程序開發的過程,可以分為這樣的一個流程:設計數據結構與算法->源程序編輯->編譯與連接->測試->調試。 在看到這個流程之前,有的同學可能會覺得,要開發程序,就一定需要專用的“編程軟件”(學名叫做集成開發環境(Integrated Development Environment),簡稱 IDE )才行,有的同學可能還見過 Visual C++ 6.0,或者 Dev-Cpp 之類的軟件。 ![](https://res.jisuanke.com/img/upload/20160712/31e05715f75de23eaa333096083149794cec52f0.jpg) 一款經典的 IDE Code::Blocks 然而,所謂的 IDE ,其實就是把編輯器、編譯器和其他的一系列工具整合在一起的產物——毫無疑問,像 Microsoft Visual Studio 之類的先進的 IDE ,在開發很多大型軟件的時候,確實可以幾十上百倍地提高開發效率。但是實際上,IDE并不是編程活動的必需品——對于初學者來說,只要有用于寫代碼的文本編輯器,和用于編譯代碼的編譯器工具鏈,就已經足夠了。 ## Part5 這門課程使用 GNU C++ Compiler 編譯器(也叫 g++ ),它可以在幾乎所有主流的操作系統上運行——為了便于練習,我們建議大家在自己的電腦上安裝和配置相同的環境,然后搭配一款自己喜歡的文本編輯器使用。 Linux 和 Mac OS X 用戶可以使用 Vim 或者 Emacs 等,Windows 用戶可以選擇系統自帶的記事本( Notepad )或者第三方的 Notepad++ 。此外,你還可以選擇 Sublime Text,Atom 或者 Visual Studio Code 等跨平臺工具。這些工具本身各有千秋,如果可能,你都可以試一試,找到你最喜歡、用起來最順手的那個(編輯器沒有“最好”,只有“最適合你”,千萬不要太糾結)。 ![](https://res.jisuanke.com/img/upload/20160712/92177cba26c41dc410c101f519be0c981823be9e.jpg) 在Mac OS X 平臺下運行的 Visual Studio Code 最后,我們將向大家介紹如何在自己的電腦上編譯程序——學完一節代碼課之后,你試著在自己的電腦上編譯運行一下: ## Part6 首先,在文本編輯器中寫好代碼,然后保存——類似于 C 語言,所有 C++ 語言的代碼都是以`*.cpp`文件的形式保存在你的電腦上的。比如你寫了一個程序,想要命名為“AlohaOe”,那么這個文件的名字就是`AlohaOe.cpp`。接下來啟動你的操作系統自帶的控制臺(Terminal或者CMD),然后進入到文件所在目錄,輸入以下命令: ~~~ g++ AlohaOe.cpp -o AlohaOe ~~~ 其中,第一個參數代表要編譯的文件,`-o`代表輸出,最后一個參數代表你想要讓編譯器輸出可執行文件的名字——這里你可以隨意更改。如果你的程序沒有錯誤的話,那么這條命令執行之后就不會返回任何提示——反之則會報錯并指出你的程序在哪里出了偏差。編譯完成之后就可以試著運行你的程序了——在命令行中輸入`./AlohaOe`或者`AlohaOe`就可以直接啟動你已經編譯好的程序。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看