2010-12-05 41 views
0

J'apprends c/C++ et je voulais travailler avec QT Creator. J'utilise une classe base64 qui refuse de compiler et toute aide serait grandement appréciée.Problèmes lors de la compilation de fichiers C dans QtCreator

Les lignes d'erreur que je reçois est

/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' 

Depuis que je ne peux en ajouter un lien à la fois, le fichier base64.h est attaché. J'ai essayé de comprendre le problème toute la journée.

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

Merci

Répondre

0

L'en-tête utilise le mot-clé spécifique C99 restrict que votre compilateur ne semble gère pas:

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

Cependant, le fichier contient également:

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

Ce qui signifie que même un compilateur C++ qui ne gère pas le mot clé restrict ne doit pas rompre ce code. Vous devriez vérifier que vous compilez réellement du C++ (l'extension de fichier pourrait être d'importance: incluez-vous ce fichier d'un .cpp ou d'un .c?).

+0

Salut icecrime, merci pour la réponse rapide, le fichier est inclus dans un fichier c. Les liens ci-dessous sont pour le fichier c le makefile généré et le fichier pro si cela aide. Merci http://rapidshare.com/files/435084121/base64.c http://rapidshare.com/files/435084571/Makefile http://rapidshare.com/files/435084682/PolicyFrameworkDesktop.pro – Bernard

+0

J'ai regardé cela pendant un certain temps sans succès, donc j'ai fini par le construire comme une bibliothèque et l'ajouter au fichier pro comme une solution de contournement. Cela fonctionne pour l'instant, mais si quelqu'un sait comment le faire correctement s'il vous plaît laissez-moi savoir merci. L'exemple de fichier pro est ci-dessous http://rapidshare.com/files/435212949/PolicyFrameworkSpy.pro – Bernard