看板 C_and_CPP 關於我們 聯絡資訊
各位好: 我想請問一些關於自訂函式 & 多檔編譯的問題 麻煩大家指教了 (問題有點冗長 敬請包涵) 現在有三個檔案 MyFunc.h 、 MyFunc.cpp 以及原本的 main.cpp -------------- MyFunc.h ----------------- #ifndef MyFunc_H_ #define MyFunc_H_ #include <cmath> const int radio = 5; double myMath (double, double); #endif ----------------------------------------- ------------- MyFunc.cpp ---------------- #include "MyFunc.h" double myMath (double a, double b) { return ratio*(sin(a) + cos(b)) ; } ------------------------------------------ -------------- main.cpp ------------------ #include <iostream> #include "MyFunc.h" int main() { std::cout << myMath(3.14, 3.14); return 0; } ------------------------------------------ 答案大概是 -4.99~ 接近 -5 1. 如果想把函式獨立成一個檔案 是不是都要分開成 原型的 header 跟 實作的 cpp 然後搭配 Header Guard ? 2. #include <cmath> 是不是只要在 .h 檔案放一次就好 ? 主程式 & 實作.cpp 都不用再放了 ? 3. 如果想定義有一些常數 像是 const int radio = 5; 這句可以直接放在 .h 嗎 ?? 因為我還有其他的檔案 compute.cpp 會用的這個 radio 跟 myMath() 所以把 radio 定義在一個 .h 裡面 然後其他 cpp 再去 #include "XXX.h" 這樣OK嗎 ?? 4. 承(3.) 那些 .cpp 檔案要去 宣告 extern int radio; 嗎 ?? 感覺好像要 但是我用 g++ -c MyFunc.cpp 不加直接跑也可以過 所以 ?? --- 以上幾個問題 感謝各位耐心看完 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.255.238.109
Favonia:最重要的觀念:#include 基本上就是把程式碼複製貼上 04/01 19:48
diabloevagto:推樓上,基本上include只是讓你比較好管理 04/01 19:57
diabloevagto:最後還是全部包起來,g++可以看precompiler忘了參數 04/01 19:58
diabloevagto:要加上什麼了 04/01 19:58
james732:-E 04/01 19:58
james732:header file的概念很簡單,但要用得好實在有點難....XD 04/01 20:00
謝謝各位回答 ※ 編輯: cory8249 來自: 111.255.7.196 (04/02 14:01)