Header Files & Templates
By Koios
Special Thanks:readleaf23477、Jason、方淑玲
一些你曾經用過的 Header Files
打包
引用
Header Files
輸入兩個正整數 \(a\), \(b\),輸出 \(a^b\)
(先忽略 pow 存在浮點數誤差的問題)
輸入兩個字串 \(a\), \(b\),判斷 \(a\) 是否等同 \(b\)
當現有的工具已經足以應付大部分的情況
就沒必要重新製造工具
(當然,在工具不堪用的情況下還是得自己造)😝
其實,在大作業一你就已經用過 Header Files
dictionary.hh
include
server.hh
GetNewWord()
Connect()
引用
function.hh 包含一個函數 power(a, b) 計算 \(a^b\)
main.cc 引用 function.hh ,計算 \(a^b\)
補充:C++ 的 Header Files 常用 .hh 或 .hpp 做副檔名
記得引用要用 "",不是 <>
function.hh
main.cpp
ctrl + 滑鼠左鍵
8
30 77 94 71 1 53 55 37
Max - Min = 93
Average = 52.25
Sample Input
Sample Output
實際上,#include 就是把 #include 變成 include 的內容
main.cpp
function.hh
實際上就是把 #include "function.hh" 替換成 function.hh 的內容
main.cpp
function.hh
function.cpp
現在我們有 main.cpp 以及 function.cpp 需要同時編譯,該怎麼做呢?
g++ main.cpp function.cppPreprocessor
前置處理器
Compiler
編譯器
Linker
連接器
Assembler
組譯器
.hh/.hpp
Header File
.cc/.cpp
Program
.o
Object File
a.out
Executable File
.hh/.hpp
Header File
.cc/.cpp
Program
Preprocessor
前置處理器
Compiler
編譯器
.o
Object File
Linker
連接器
Assembler
組譯器
a.out
Executable File
| ifndef | 檢查是否已經定義(if not define) |
|---|---|
| define | 定義巨集 |
| endif | 結束程式塊,與 ifndef 成對 |
命名細節
#define [想取代的字串] [用來取代的內容]
#define [想取代的字串](參數) [用來取代的內容]
輸入 3 7 會輸出 100 ?
輸入三個數字 \(a\) \(b\) \(c\),嘗試用巨集定義一個函數判斷三個數字的最大值
5 3 1010Sample Input
Sample Output
不過是兩個不同的 Bob
那麼,在資芽小學校找 Bob 的時候,到底是找哪個 Bob 呢?
在2022班有個 Bob
在2021班也有個 Bob
在2022班有個 Bob
在2021班也有個 Bob
如果你要找 2022 班的 Bob,那應該就要說
"我想要找 2022 班的 Bob"
C2022 班的 Bob
C2022::Bob
Ctrl-C + Ctrl-V !
long long, unsigned int, etc...
Ctrl-C + Ctrl-V
Ctrl-C + Ctrl-V
Ctrl-C + Ctrl-V
Ctrl-C + Ctrl-V
Ctrl-C + Ctrl-V
試著透過 template 實作 Swapp 函數
同時支援 int、long long、double、char 的交換
https://drive.google.com/file/d/1sAUNCd79RDE23to8osthJQiw5zPAxPOP/view
https://docs.google.com/presentation/d/11RWKEOWb-Efgw8FUhyFDn8p9VkvEj-C3vgbuzST3QLw/edit#slide=id.p
https://tw-csie-sprout.github.io/c2021/slides/template/#/
https://blog.csdn.net/SummerXRT/article/details/119741741
https://www.runoob.com/cplusplus/cpp-preprocessor.html
https://hackmd.io/@sysprog/c-prog/%2Fs%2FS1maxCXMl
https://blog.gtwang.org/programming/howto-create-library-using-gcc/
https://viml.nchc.org.tw/archive_blog_340/
https://jasonblog.github.io/note/c++/shi_fou_neng_rang_c_++_template_de_biao_tou_dang_z.html
https://www.796t.com/content/1546810237.html
https://www.runoob.com/cplusplus/cpp-namespaces.html
https://docs.microsoft.com/zh-tw/cpp/cpp/namespaces-cpp?view=msvc-170
https://www.cplusplus.com/doc/tutorial/namespaces/