[問題] 請教標頭檔的問題

看板C_and_CPP (C/C++)作者 (阿信)時間16年前 (2009/08/20 13:41), 編輯推噓2(206)
留言8則, 3人參與, 最新討論串1/1
#ifndef JSIOPORT_H #define JSIOPORT_H #ifndef __cplusplus extern "C" { #endif #ifndef IN #define IN #endif #define JSPORT_API _stdcall UCHAR JSPORT_API CALLBACK JSDIOInit(); VOID JSPORT_API CALLBACK JSDIOClose(); UCHAR JSPORT_API CALLBACK JSReadChar( IN USHORT Address ); USHORT JSPORT_API CALLBACK JSReadWord( IN USHORT Address ); ULONG JSPORT_API CALLBACK JSReadLong( IN USHORT Address ); USHORT JSPORT_API CALLBACK JSReadIntelligentWord( IN USHORT Address , IN USHORT Index ); ULONG JSPORT_API CALLBACK JSReadIntelligentLong( IN USHORT Address , IN USHORT Index ); VOID JSPORT_API CALLBACK JSWriteChar( IN USHORT Address, IN UCHAR Value ); VOID JSPORT_API CALLBACK JSWriteWord( IN USHORT Address, IN USHORT Value ); VOID JSPORT_API CALLBACK JSWriteLong( IN USHORT Address, IN ULONG Value ); VOID JSPORT_API CALLBACK JSWriteIntelligentWord( IN USHORT Address, IN USHORT Index, IN USHORT DATA ); VOID JSPORT_API CALLBACK JSWriteIntelligentLong( IN USHORT Address, IN USHORT Index, IN ULONG DATA ); UCHAR JSPORT_API CALLBACK GetBitFrByte( IN UCHAR Data, IN UCHAR Bit ); UCHAR JSPORT_API CALLBACK GetBitFrWord( IN USHORT Data, IN UCHAR Bit ); UCHAR JSPORT_API CALLBACK SetBitToByte( IN UCHAR Data, IN UCHAR Bit, IN UCHAR ON ); USHORT JSPORT_API CALLBACK SetBitToWord( IN USHORT Data, IN UCHAR Bit, IN UCHAR ON ); #ifndef __cplusplus } #endif #endif // JSIOPORT_H 我使用visual c++ 編譯完會出現h(5) : error C2059: 語法錯誤 : '字串' (extern "c" 這一行) 網路上的說法是extern "c"是專寫給C++看,請問各位高手,此標頭檔要如何修改才能被C 引用?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.132.58

08/20 13:55, , 1F
extern "C" 是告訴 compiler, 裡面的東西都是extern
08/20 13:55, 1F

08/20 13:57, , 2F
且用 C 寫的, 所以如果你是想要把都是用C建立的.obj檔
08/20 13:57, 2F

08/20 13:57, , 3F
連結起來, 那把 extern 那段拿掉應該就可以了
08/20 13:57, 3F

08/20 14:07, , 4F
正常不是會用 #ifdef __cplusplus 來括 extern "C" 嗎??
08/20 14:07, 4F

08/20 14:08, , 5F
這個header怎麼是剛好反過來?? 把 #ifndef 換掉試試@@"
08/20 14:08, 5F

08/20 14:29, , 6F
可是把extern"c"那段拿掉會出現錯誤耶@@
08/20 14:29, 6F

08/20 14:36, , 7F
只把extern "C"{這行拿掉?? 那它後面還有對應一個}呢??
08/20 14:36, 7F

08/20 14:37, , 8F
又~~#ifndef __cplusplus換成#ifdef __cpluscplus不行??
08/20 14:37, 8F
文章代碼(AID): #1AZE7-3I (C_and_CPP)
文章代碼(AID): #1AZE7-3I (C_and_CPP)