深入理解C語言的預編譯指令之 include
寫過C語言的朋友都熟悉#include,在列印「hello world」這樣一條語句也用上這條指令。但是,說熟悉它,只是表面熟悉,更多感覺是既熟悉又抽象陌生,結果也就只是不知道為什麼的背誦了。抽象、熟悉而陌生,使得#include成為「最熟悉的陌生人」。
試著從另外的角度來深入理解它。
1:首先,它是一條預編譯指令
也就是在編譯之前就做了的,那麼做了什麼呢?動態包含。
2:其次,來理解何為「動態包含」?
一開始:
效果:
現在,先創建一個頭文件:
想要一起學習C++的可以加裙六二六八七一九一六,裙內有各種資料滿足大家,歡迎加裙
把語句拷貝到ok.h中:
主文件中:
效果一樣:
可見:#include 文件名 ,這條語句的功能是:在調用的時候覆制該.h中的內容、粘貼到調用的地方的效果。這就是動態包含。
3:再次,為什麼要這麼做?也就是「動態包含做成#include」的意義:
這樣的好處可以簡化後續的維護:以後如果要修改了,只要到這個.h中來修改,那麼N多地方多跟著是最新的了。
4:最後,繼續探究!
其實.h也不一定是必須的,你可以是任意的後綴。這樣就更加的體會出,#include 文件名,這個預編譯指令的重點是#include,是動態包含,而不是後綴是什麼文件。
如:我把ok.h改為ok.ncc,同時為了區別,增加了幾個字:
在主文件中修改包含的文件:
結果同樣正確(列印了最新的內容)
更多C語言詳解,敬請關注下集分解...
想要一起學習C++的可以加裙六二六八七一九一六,裙內有各種資料滿足大家,歡迎加裙
※學習C加加要讀那些書
※可以跳過C語言直接學習C加加?
※3分鐘帶你讀懂C語言和C加加學習路線
※c加加教程之c加加函數指針詳解
※C加加構造函數Constructor
TAG:C加加 |
※Canonical宣布Kotlin編程語言Snap包格式上線
※vscode寫c語言(windows)
※用彙編語言編寫TCP Bind Shell的菜鳥教程
※CEVA和mPerpetuo合作為CEVA視覺處理器提供Halide語言支持
※Facebook Libra的Move語言與其他語言有什麼不同?
※大師語言 | John William Godward
※VSCode 引入 Python 語言伺服器;Canonical 請求幫助測試 Ubuntu 伺服器安裝程序
※Facebook收購Bloomsbury AI,以提高自然語言處理能力打擊假新聞
※使用PaddleFluid和TensorFlow訓練RNN語言模型
※GitHub趨勢榜第二名:解析、對比不同編程語言的Semantic庫
※身體的語言 ya.tender
※Facebook新研究:一個編碼器hold住93種語言!跨語言遷移無需修改
※再見 Python!Yann LeCun 警告:深度學習需要新編程語言
※再見Python!Yann LeCun警告:深度學習需要新編程語言
※可提取結構化信息的自然語言理解 Python庫Snips NLU
※滲透測試中的 Go 語言使用:編寫反彈後門 Hershell
※SoulSense 紋身 圖形的語言,Cool到離不開視線
※微軟推最新程序語言Bosque 以Functors取代Loop循環
※Python自然語言處理: 使用SpaCycle庫進行標記化、詞幹提取和詞形還原
※用R語言的Blogdown+Hugo+Netlify+Github建博客