ctags程序員
ctags是vim下方便代碼閱讀的工具。儘管ctags也能夠支持其它編輯器,可是它正式支持的只有VIM。而且VIM中已經默認安裝了Ctags,它能夠幫助程序員很容易地瀏覽源代碼。(尤爲是大型的工程)vim
1、安裝ctags數組
一、命令行安裝編輯器
切換到root用戶之下,輸入yum install ctagside
二、下載源碼安裝(網上提供的方法)函數
1)從http://ctags.sourceforge.net/下載源代碼包後,解壓縮生成源代碼目錄,工具
2)而後進入源代碼根目錄執行./configure,ui
3)而後執行make,spa
4)編譯成功後執行make install操作系統
2、簡單的使用
1)ctags-R:在當前目錄下創建索引
2)Ctrl + ](右方括號) :跳轉到函數或變量的定義處
3)Ctrl + T :跳轉至上級
例如:
一個工程中含有my_tags.h、ctags.c、main.c三個源文件
內容分別爲
輸入ctags - R在當前目錄下面建立一個索引
打開main.c或者my_tags.h,將光標放到fun處,按ctrl + ]便可跳轉到函數定義處
再按ctrl +T跳轉 至上級
Makefile
會不會寫makele,從一個側面說明了一我的是否具有完成大型工程的能力。 一個工程中的源文件不計數,其按類型、功能、模塊分別放在若干個目錄中,makele 定義了一系列的規則來指定,哪些文件須要先編譯,哪些文件須要後編譯,哪些文件須要從新編譯,甚至於進行更復雜的功能操做,由於makele就像一個Shell腳本同樣, 其中也能夠執行操做系統的命令。makele帶來的好處就是——「自動化編譯」,一旦寫 好,只須要一個make命令,整個工程徹底自動編譯,極大的提升了軟件開發的效率。
make是一個動做而Makefile是一個文件
make命令執行時,須要一個 Makele 文件,以告訴make命令須要怎麼樣的去編譯和連接程序。
Makefile文件中主要是文件的依賴關係和依賴方式。
在定義好依賴關係後,後續的那一行定義瞭如何生成目標文件的操做系統命令,必定要以Tab鍵開頭。make並無論命令是怎麼工做的,他只管執行所定義的命令。
make是如何工做的?
(1) make會在當前目錄下找名字叫「Makefile」或「makefile」。
(2) 若是找到,它會找文件中的第一個目標文件.o。
(3) 若是文件不存在,它會根據依賴關係找.s文件。
(4) 若.s文件不存在,make會在當前文件中找目標爲.s文件的依賴性即.i。
(5) 若.i文件不存在,根據依賴關係會找.c文件,固然.c文件時存在的啦。因而,make會生成一個.o文件,而後去執行文件。
這就是整個make的依賴性,make會一層一層去找文件的依賴關係,直到最終編譯出第一個目標文件。在找的過程當中,若是出錯,如:最後被依賴的文件找不到,make會直接退出,並報錯,對於定義的命令的錯誤或者編譯不成功,make無論。make只管文件的依賴性,即若是找到依賴關係以後,冒號後邊的文件不存在,make也不工做。
清理目標文件的規則:
每個Makefile中都應該寫一個清理目標文件(.o和執行文件)的規則,這不只便於重編譯,也有利於保持文件的清潔。
.PHONY:clean
clean:
rm -f 文件
.PHONY後邊的clean事宜「僞目標」。在rm命令前面加上一個小減號的意思是,就算某些文件處理問題,不要管,繼續作後邊的事情。不要將clean的規則放到文件的開頭,否則出成爲make的默認目標。
例如:爲proc.c編寫一個Makefile
在proc.c當前目錄下建立一個Makfile文件,並在Makefile文件中編輯以下
或者
運行Makefile
make
清除Makefile產生的多餘文件
make clean
注意事項:
一、編寫依賴方式時,必定要以Tab鍵開頭(不能用空格代替)
二、clean通常都放在文件的最後
三、@能夠屏蔽輸出依賴方式
四、makefile 默認值生成一個目標文件,就中止
在Linux下編寫一個簡單的進度條
在編寫以前先來了解一個奇妙的現象,有"\n"
運行結果爲:
hello world早早運行完畢可是2秒以後程序纔會運行完畢
運行結果
系統2秒以後纔會輸出hello world
這是爲何呢?
注意:'\n'回車並換行,執行printf時先寫到行緩衝,遇到\n的時候將行緩衝的內容刷出
因此第一個程序中是先輸出hello world而後再休眠,第二個程序中,因爲沒有'\n',因此不會輸出hello world,當程序運行完畢以後,系統會自動刷新緩衝區,這時纔會輸出hello world。
進度條實現原理
1)實現動態的增加
能夠定義一個數組,並設置一個計數器,當數字增長的同時,給字符數組每次增長一個元素,而且打印時覆蓋以前的數組。
2)保證打印信息在同一行
每次將光標定位到最左邊,從光標處打印,使用’\r‘,回車
3)複製動態的效果實現
定義一個數組
char index[4] = {'|', '/', '-', '\\'};
index[count%4];
4)實現打印長度相同
%-100s
5)給人複製的效果
每輸出一次,程序掛起一段時間
實現代碼
效果