2010-12-05 113 views
0

我正在學習c/C++並希望使用QT Creator做一些工作。我正在使用一個base64類,只是拒絕編譯和任何幫助將不勝感激。在QtCreator中編譯C文件時遇到的問題

錯誤線我得到的是

/QTDev/PolicyFrameworkDesktop-build-desktop/../PolicyFrameworkDesktop/libhaggle/base64.h:59: error: expected ';', ',' or ')' before 'in' 

/QTDev/PolicyFrameworkDesktop-build-desktop/../PolicyFrameworkDesktop/libhaggle/base64.h:66: error: expected ';', ',' or ')' before 'in' 

/QTDev/PolicyFrameworkDesktop-build-desktop/../PolicyFrameworkDesktop/libhaggle/base64.c:68: error: expected ';', ',' or ')' before 'in' 

/QTDev/PolicyFrameworkDesktop-build-desktop/../PolicyFrameworkDesktop/libhaggle/base64.c:: error: At top level: 

/QTDev/PolicyFrameworkDesktop-build-desktop/../PolicyFrameworkDesktop/libhaggle/base64.c:320: error: expected ';', ',' or ')' before '*' token 

/QTDev/PolicyFrameworkDesktop-build-desktop/../PolicyFrameworkDesktop/libhaggle/base64.c:373: error: expected ';', ',' or ')' before 'in' 
/QTDev/PolicyFrameworkDesktop-build-desktop/../PolicyFrameworkDesktop/libhaggle/base64.c:456: error: expected ';', ',' or ')' before 'in' 

因爲我只能一次添加一個鏈接時,base64.h文件附後。我一直試圖弄清楚這個問題。

http://rapidshare.com/files/435084122/base64.h

感謝

回答

0

頭採用C99特定的關鍵字restrict你的編譯器顯然不處理:

extern void base64_encode (const char *restrict in, size_t inlen, 
          char *restrict out, size_t outlen); 

但是,該文件還包含了:

#ifdef __cplusplus 
// In case we do not have gnu extensions when including from C++ 
#define restrict 
#endif 

這意味着甚至不處理restrict關鍵字的C++編譯器不應該破壞此代碼。你應該檢查你是否正在編譯C++(文件擴展名可能是重要的:你是否包含這個文件從.cpp.c?)。

+0

嗨icecrime,感謝您的快速回復,該文件被包含在一個c文件中。下面的鏈接用於生成makefile和pro文件的c文件(如果有幫助的話)。感謝http://rapidshare.com/files/435084121/base64.c http://rapidshare.com/files/435084571/Makefile http://rapidshare.com/files/435084682/PolicyFrameworkDesktop.pro – Bernard 2010-12-05 17:51:55