[問題] 將cpp程式包成.o檔,給予c主程式使用[已解決]
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC, Linux
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
因為公司想使用hash table的功能,
我在網路上搜尋一下c寫的hash table都沒有c++的map好用!
所以我打算把cpp的程式包成.o,讓c去使用(前輩很堅持要用c..)
目前在compiler階段就錯了!
錯誤結果(Wrong Output):
Map.h:4: 錯誤:expected identifier or 「(」 before string constant
main.c: In function 「main」:
main.c:6: 警告:隱含宣告函式 「map_insert」
make: *** [main] Error
程式碼(Code):(請善用置底文網頁, 記得排版)
Map.h
#ifndef MAP_H
#define MAP_H
extern "C"{
void map_insert(char* SrcKey,char* SrcVal);
};
#endif
Map.cpp
#include "Map.h"
#include <map>
#include <iostream>
using namespace std;
map<char*,char*> mymap;
void map_insert(char* SrcKey,char* SrcVal)
{
mymap.insert( pair<char*,char*>(SrcKey,SrcVal) );
}
main.c
#include <stdio.h>
#include "Map.h"
int main()
{
map_insert("key","value");
return 0;
}
補充說明(Supplement):
makefile的內容是
CC=gcc -Wall -Wextra
CPLUS=g++ -Wall -Wextra
main:clean map
$(CC) main.c Map.o -o main.out
map:Map.h Map.cpp
$(CPLUS) -c Map.cpp
clean:
rm -f *.o *.out
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.220.204.217
※ 編輯: angleevil 來自: 61.220.204.217 (08/29 17:02)
※ 編輯: angleevil 來自: 61.220.204.217 (08/29 17:06)
推
08/29 17:41, , 1F
08/29 17:41, 1F
→
08/29 17:45, , 2F
08/29 17:45, 2F
→
08/29 17:47, , 3F
08/29 17:47, 3F
推
08/29 17:49, , 4F
08/29 17:49, 4F
→
08/29 18:50, , 5F
08/29 18:50, 5F
→
08/29 21:38, , 6F
08/29 21:38, 6F
推
08/29 23:36, , 7F
08/29 23:36, 7F
推
08/29 23:56, , 8F
08/29 23:56, 8F
→
08/30 01:23, , 9F
08/30 01:23, 9F
→
08/30 01:24, , 10F
08/30 01:24, 10F
→
08/30 01:27, , 11F
08/30 01:27, 11F
→
08/30 01:42, , 12F
08/30 01:42, 12F
→
08/30 01:42, , 13F
08/30 01:42, 13F
→
08/30 02:32, , 14F
08/30 02:32, 14F
推
08/30 02:53, , 15F
08/30 02:53, 15F
推
08/30 03:02, , 16F
08/30 03:02, 16F
→
08/30 08:14, , 17F
08/30 08:14, 17F
推
08/30 16:55, , 18F
08/30 16:55, 18F
推
08/30 16:59, , 19F
08/30 16:59, 19F
→
08/30 17:00, , 20F
08/30 17:00, 20F
推
08/30 17:42, , 21F
08/30 17:42, 21F
推
08/31 03:04, , 22F
08/31 03:04, 22F
→
08/31 09:32, , 23F
08/31 09:32, 23F
→
08/31 09:34, , 24F
08/31 09:34, 24F
→
08/31 09:35, , 25F
08/31 09:35, 25F
→
08/31 09:36, , 26F
08/31 09:36, 26F
→
08/31 09:37, , 27F
08/31 09:37, 27F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):