Re: [問題] extern "C"的問題
→
06/09 23:43,
06/09 23:43
→
06/09 23:44,
06/09 23:44
原文太亂,簡單整理一下好了,部份內容也許有錯,保持懷疑態度觀看即可
確定搞懂這些觀念:
1. 函數定義、函數宣告 為何
2. 為何有 函數只能定義一次,但可宣告多次 的說法
3. 標頭檔的目的,以及編譯器如何處理
4. 假設 某外部函數 沒有原型宣告,為什麼仍可呼叫他 (連結器;C與C++)
5. 函數重載是什麼、C++為什麼可以、C為什麼不可以
6. extern 與 extern "C",如何影響編譯器、連結器的行為
--
你的 test.h 裡面內容應該是 test.c 裡面函數的原型宣告。
其他人 需要呼叫 test.c 裡的函數時,才 include 之。
因此 main.cpp 應該 include 而 test.c 不需要 include
※ 以下 AM 12:57 修文補充:
此例中的 test.c 程式碼裡,可以『不需要』include "test.h" 也能正常編譯。
但在程式開始把 test.h 編譯進去還是比較適當、妥善的作法。
--
你想要用 C++ 程式碼 呼叫「C 的程式碼所撰寫、編譯的函數」
所以在 main.cpp 要 include 其原型宣告所在時
必須做
extern "C"{
#include "test.h"
}
--
文件:
http://blog.anglee.org/2007/02/extern-c.html (寫的比較亂,但有完整範例收集)
http://blog.csdn.net/wfwd/archive/2006/05/30/763734.aspx
http://en.wikipedia.org/wiki/Name_mangling
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.8.128.232
※ 編輯: zlw 來自: 124.8.128.232 (06/10 06:09)
推
06/10 12:08, , 1F
06/10 12:08, 1F
→
06/10 12:08, , 2F
06/10 12:08, 2F
→
06/10 12:09, , 3F
06/10 12:09, 3F
→
06/10 12:09, , 4F
06/10 12:09, 4F
→
06/10 12:10, , 5F
06/10 12:10, 5F
推
06/10 12:23, , 6F
06/10 12:23, 6F
→
06/10 12:23, , 7F
06/10 12:23, 7F
→
06/10 12:45, , 8F
06/10 12:45, 8F
→
06/10 12:46, , 9F
06/10 12:46, 9F
→
06/10 12:48, , 10F
06/10 12:48, 10F
→
06/10 12:49, , 11F
06/10 12:49, 11F
→
06/10 12:49, , 12F
06/10 12:49, 12F
※ 編輯: zlw 來自: 124.8.128.232 (06/10 12:58)
推
06/10 13:27, , 13F
06/10 13:27, 13F
→
06/10 13:28, , 14F
06/10 13:28, 14F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章