預備知識javascript
" 顯示行號 set number " 顯示標尺 set ruler " 歷史紀錄 set history=1000 " 輸入的命令顯示出來,看的清楚些 set showcmd " 狀態行顯示的內容 set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")} " 啓動顯示狀態行1,老是顯示狀態行2 set laststatus=2 " 語法高亮顯示 syntax on set fileencodings=utf-8,gb2312,gbk,cp936,latin-1 set fileencoding=utf-8 set termencoding=utf-8 set fileformat=unix set encoding=utf-8 " 配色方案 colorscheme desert " 指定配色方案是256色 set t_Co=256 set wildmenu " 去掉有關vi一致性模式,避免之前版本的一些bug和侷限,解決backspace不能使用的問題 set nocompatible set backspace=indent,eol,start set backspace=2 " 啓用自動對齊功能,把上一行的對齊格式應用到下一行 set autoindent " 依據上面的格式,智能的選擇對齊方式,對於相似C語言編寫頗有用處 set smartindent " vim禁用自動備份 set nobackup set nowritebackup set noswapfile " 用空格代替tab set expandtab " 設置顯示製表符的空格字符個數,改進tab縮進值,默認爲8,現改成4 set tabstop=4 " 統一縮進爲4,方便在開啓了et後使用退格(backspace)鍵,每次退格將刪除X個空格 set softtabstop=4 " 設定自動縮進爲4個字符,程序中自動縮進所使用的空白長度 set shiftwidth=4 " 設置幫助文件爲中文(須要安裝vimcdoc文檔) set helplang=cn " 顯示匹配的括號 set showmatch " 文件縮進及tab個數 au FileType html,python,vim,javascript setl shiftwidth=4 au FileType html,python,vim,javascript setl tabstop=4 au FileType java,php setl shiftwidth=4 au FileType java,php setl tabstop=4 " 高亮搜索的字符串 set hlsearch " 檢測文件的類型 filetype on filetype plugin on filetype indent on " C風格縮進 set cindent set completeopt=longest,menu " 功能設置 " 去掉輸入錯誤提示聲音 set noeb " 自動保存 set autowrite " 突出顯示當前行 set cursorline " 突出顯示當前列 set cursorcolumn "設置光標樣式爲豎線vertical bar " Change cursor shape between insert and normal mode in iTerm2.app "if $TERM_PROGRAM =~ "iTerm" let &t_SI = "\<Esc>]50;CursorShape=1\x7" " Vertical bar in insert mode let &t_EI = "\<Esc>]50;CursorShape=0\x7" " Block in normal mode "endif " 共享剪貼板 set clipboard+=unnamed " 文件被改動時自動載入 set autoread " 頂部底部保持3行距離 set scrolloff=3
完整的編譯並執行cpp文件過程php
(一)代碼編寫 html
#include <iostream> int main(void) { std::cout << "hello, world" << endl; return 0; }
gcc -Wall test.cpp -o test -lstdc++ //必須加上 -lstdc++ 選項用來通知連接器連接靜態庫 libstdc++.a, //不然會由於找不到庫函數而出錯
g++ -Wall test.cpp -o test
該命令將文件‘test.cpp’中的代碼編譯爲機器碼並存儲在可執行文件 ‘test’中。機器碼的文件名是經過 -o 選項指定的,該選項一般做爲命令行中的最後一個參數。若是被省略,輸出文件默認爲 ‘a.out’。 java
g++ test.cpp
本例中,編譯器使用了 -Wall 選項而沒產生任何警告,由於示例程序是徹底合法的。python
#include <stdio.h> int main(void) { printf("Hello, world!/n"); return 0; }
./test
hello, world
#include "test.h" int main() { test("hello world!"); return 0; }
void test(const char* name);
#include <iostream> using namespace std; #include "test.h" void test(const char* name) { cout<<"Hello World!"<<endl; }
g++ -Wall main.cpp test_fn.cpp -o newTest
CXXC=g++ CXXFLAGS=-Wall newTest: main.o test_fn.o //使用了隱含規則 cpp-->o clean: rm -f newTest main.o test_fn.o
$ make g++ -Wall -c -o main.o main.cpp g++ -Wall -c -o test_fn.o test_fn.cpp g++ main.o test_fn.o -o newTest 運行該可執行文件: $ ./newTest Hello, world!
$ vim test.cpp $ make //從新make g++ -Wall -c -o test.o test.c //此時只make該被修改的文件test.cpp g++ test.o test_fn.o -o newTest
$ ./newTest
Hello, world!
$ make clean
rm -f hello hello.o hello_fn.o
#include <math.h> #include <stdio.h> int main (void) { double x = sin (2.0); printf ("The value of sin(2.0) is %f/n", x); return 0; }
$ gcc -Wall calc.c -o calc /tmp/ccbR6Ojm.o: In function 'main': /tmp/ccbR6Ojm.o(.text+0x19): undefined reference to ‘sin’
$ gcc -Wall calc.c /usr/lib/libm.a -o calc
函數庫‘libm.a’包含全部數學函數的目標文件,好比sin,cos,exp,log及sqrt。連接器將搜索全部文件來找到包含 sin 的目標文件。一旦包含 sin 的目標文件被找到,主程序就能被連接,一個完整的可執行文件就可生成了:
$ ./calc The value of sin(2.0) is 0.909297
$ gcc -Wall calc.c -lm -o calc
g++ test.cpp -std=c++11