1. 程式人生 > >C++程式生產過程

C++程式生產過程

編譯與解釋

計算機的眼中只有0與1,但是就是這麼簡單的“學識”,具有了高速的計算能力以及超強的記憶力就可以構建現在的資訊社會,正所謂“天下武功,唯快不破”。要讓計算機為我們是從,需要我們與計算機之間有個折中的交流方式,那就是程式設計師每天敲得程式碼。
C++作為一種高階語言,是屬於編譯語言,除此之外還有解釋性語言。編譯與解釋的不同主要在編譯器或是直譯器將其轉換為機器語言的步驟不同。編譯語言原始碼經過編譯器轉換為二進位制目標程式;此時程式依然不可執行,因為缺少一些庫檔案,所以需要經過連線將用到的庫檔案從系統中一起新增程式中生成可執行檔案。因此,在不改動情況下,下一次執行程式是不需要編譯的,所以編譯語言執行速度很快。但是有一個缺點就是編譯好的程式是對當前作業系統敏感的,不能實現跨平臺。解釋性語言不是將原始碼全部翻譯為機器語言後在執行,而是一邊解釋一邊執行,因此就像下班馬路的不能快馬加鞭,速度有點慢,而且每次執行都需要解釋。因為其沒有解釋成機器語言因此對作業系統不敏感,可以實現跨平臺。


C++程式生產步驟

  • C++原始碼 -> 編譯器 –> 目標程式 –> 連線 –> 可執行程式

不同作業系統生成的目標程式以及可執行程式是不同的,在Windows上目標程式是.obj檔案,Linux系統為.o檔案。在編譯過程中進行語法和詞法的檢查。

  • C++程式設計環境:硬體為一臺計算機;軟體為編譯程式以及編輯器來編寫原始碼。編譯程式我選擇的是GUN;編輯器選擇VIM,為了更好跳轉檔案給VIM新增NERDTree外掛,並使用F2作為頁面之間的跳轉快捷鍵,並設定縮排4個空格、顯示行號。設定快捷鍵直接編譯以及執行,為了Vim介面美觀設定背景樣式以及字型。以下為Vim的一些設定。
"設定樹狀目錄切換,頁面跳轉
map <F2> :NERDTreeToggle<CR>
map <F3> :tabn<CR>
set shiftwidth=4
autocmd vimenter * NERDTree

"設定背景樣式以及字型
colorscheme solarized
set guifont=Courier_New:h12:cANSI

"編譯
func! CompileCode()
exec "w"
if &filetype == "c"
	exec "!cl %<.c "
elseif &filetype ==
"cpp" exec "!g++ % -o %<" elseif &filetype == "python" exec "!python %<.py" endif endfunc "執行程式碼 func! RunCode() exec "w" if &filetype == "c" || &filetype == "cpp" || &filetype == "haskell" exec "! %<.exe" elseif &filetype == "python" exec "!python %<.py" endif endfunc " Ctrl + C 儲存、編譯 map <c-p> :call CompileCode()<CR> imap <c-p> <ESC>:call CompileCode()<CR> vmap <c-p> <ESC>:call CompileCode()<CR> " Ctrl + R 儲存、執行 map <c-r> :call RunCode()<CR> imap <c-r> <ESC>:call RunCode()<CR> vmap <c-r> <ESC>:call RunCode()<CR>

  • 新建demo1.cpp檔案,並編寫原始碼。
    Vim

  • 使用g++語句進行編譯以及連線,可以看出在當前資料夾下生成了.exe檔案。執行,得到需要結果。
    C++編譯語句