在QtCreator中编译C文件时出现问题

时间:2010-12-05 17:28:10

标签: c++ c compiler-errors qt-creator

我正在学习c / c ++,并希望与QT Creator合作。我正在使用一个拒绝编译的base64类,非常感谢任何帮助。

我得到的错误行是

/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

由于

1 个答案:

答案 0 :(得分: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包含此文件?)。