[問題] 出現 was not declared in this scope

看板C_and_CPP作者 (^.< 啾咪 ~)時間12年前 (2013/09/28 14:18), 編輯推噓3(3018)
留言21則, 4人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) linux 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) no 問題(Question): 有一個檔案 c.cpp 的內容如下, #include "./externC.h" int main(int argc, const char *argv[]) { foo(); return 0; } 這是 externC.h 的內容, void foo(void); 使用 gcc -c c.cpp 卻出現了, c.cpp: In function ‘int main(int, const char**)’: c.cpp:4:9: error: ‘foo’ was not declared in this scope 若是將 c.cpp 改成如下 void foo(void); int main(int argc, const char *argv[]) { foo(); return 0; } 就沒問題了, 請問這將 void foo(void); 寫在 .cpp 中, 跟將 void foo(void); 寫在 .h 中,在讓 c.cpp 做 include , 這樣有何差別呢 ?? 謝謝 ! ! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.163.48.108

09/28 14:40, , 1F
我用可以正常使用,你是否沒有寫externC.c?
09/28 14:40, 1F

09/28 15:13, , 2F
對耶,我沒有寫 .. 這就是我對 c++的不了解
09/28 15:13, 2F

09/28 15:14, , 3F
一語驚醒夢中人,感謝 d大
09/28 15:14, 3F

09/28 15:33, , 4F
等等, 這跟有沒有寫 externC.c 有關係嗎?
09/28 15:33, 4F

09/28 15:35, , 5F
照理講這樣的步驟應該是不會有問題才是
09/28 15:35, 5F

09/28 15:40, , 6F
想到一個有點扯的可能原因: externC.h 開了但沒存檔
09/28 15:40, 6F

09/28 15:41, , 7F
所以磁碟上有一個空的 extern.h 檔案
09/28 15:41, 7F

09/28 15:41, , 8F
所以 include 沒問題但找不到 foo 的定義...
09/28 15:41, 8F

09/28 16:34, , 9F
沒寫應該是 link 錯誤才對,不太清楚為什麼有這錯誤
09/28 16:34, 9F

09/28 18:23, , 10F
原 PO 有用 -c 所以沒做 link, 這個錯誤是找不到 foo 的定義
09/28 18:23, 10F

09/28 18:23, , 11F
所以我才猜是這種奇怪的錯誤...
09/28 18:23, 11F

09/28 20:58, , 12F
因為我只有寫過 C ,不大清楚 c++ 為何這樣不行,但若我是
09/28 20:58, 12F

09/28 20:59, , 13F
若是用 C 去試的話,是沒有問題的,而且我確定那個 .h 檔
09/28 20:59, 13F

09/28 20:59, , 14F
有被 c.cpp include 進來,因為我用 gcc -E c.cpp ,有看
09/28 20:59, 14F

09/28 21:00, , 15F
到 void foo(void); 這行,被插入到 c.cpp 中
09/28 21:00, 15F

09/28 21:00, , 16F
可以請問 d 大是怎麼試的嗎 ? externC.c 要怎麼寫 ! 感謝
09/28 21:00, 16F

09/28 21:02, , 17F
如果我直接將 c.cpp 換成 c.c 再試的話,就完全沒有問題
09/28 21:02, 17F

09/28 21:13, , 18F
那用g++ -c c.cpp呢
09/28 21:13, 18F

09/28 21:48, , 19F
何不將你三個檔案都放上來,給大家看比較快
09/28 21:48, 19F

09/28 22:27, , 20F
p大 用了 g++ -c c.cpp 還是一樣的 error message
09/28 22:27, 20F

09/28 23:06, , 21F
L 大,externC.h 真的有問題,我重 key 一次就好了,感謝
09/28 23:06, 21F
文章代碼(AID): #1IHdIliE (C_and_CPP)
文章代碼(AID): #1IHdIliE (C_and_CPP)