ISO C++ forbids declaration of SHA1

ISO C++ forbids declaration of SHA1 - C++ - Programmation

Marsh Posté le 18-02-2011 à 18:03:32    

Bonjour,
 
le projet consiste à développer une stack ssl sur TCP. avant que je reprenne les codes sources, la stack ssl a été simulée. le gens qui étaient dessus utilisaient par exemple hashlib++ pour pouvoir utiliser des fonctions de hashage.
 
j'ai donc commencé par faire un #include <openssl/ ...>
 
avant que j'implémente openssl, le projet compile bien. après avoir implémenté openssl, j'obtiens les erreurs suivantes :
 

Code :
  1. In file included from /home/moi/work/include/hashlib++/hashlibpp.h:50,
  2.                  from /home/moi/work/ail/dummyupd.cpp:24:
  3. /home/moi/work/include/hashlib++/hl_sha1wrapper.h:74: error: ISO C++ forbids declaration of ‘SHA1’ with no type
  4. /home/moi/work/include/hashlib++/hl_sha1wrapper.h:74: error: expected ‘;’ before ‘*’ token
  5. In file included from /home/moi/work/include/hashlib++/hashlibpp.h:51,
  6.                  from /home/moi/work/ail/dummyupd.cpp:24:
  7. /home/moi/work/include/hashlib++/hl_sha256wrapper.h:77: error: ISO C++ forbids declaration of ‘SHA256’ with no type
  8. /home/moi/work/include/hashlib++/hl_sha256wrapper.h:77: error: expected ‘;’ before ‘*’ token
  9. make[2]: *** [CMakeFiles/ail.dir/dummyupd.cpp.o] Erreur 1
  10. make[1]: *** [CMakeFiles/ail.dir/all] Erreur 2
  11. make: *** [all] Erreur 2


 
apparemment il ne sait pas à quelle namespace appartient SHA1 et SHA256 ... mais je ne suis pas sur, je suis débutant en cpp.
 
Est ce que quelqu'un pourrait m'expliquer
1) d'ou vient exactement l'erreur
2) comment corriger
 
Merci d'avance.
 
contenu de hashlibpp.h (ligne 50 )

Code :
  1. #include "hl_exception.h"
  2. #include "hl_hashwrapper.h"
  3. #include "hl_md5wrapper.h"
  4. #include "hl_sha1wrapper.h" // LIGNE 50
  5. #include "hl_sha256wrapper.h"
  6. #include "hl_sha384wrapper.h"
  7. #include "hl_sha512wrapper.h"


 
contenu de dummyupd (ligne 24 ):

Code :
  1. #include <hashlibpp.h> // ligne 24


 
contenu de hl_sha1wrapper.h (ligne 74)

Code :
  1. SHA1 *sha1; // ligne 74


 

Reply

Marsh Posté le 18-02-2011 à 18:03:32   

Reply

Marsh Posté le 18-02-2011 à 18:10:16    

1) Ben clairement, il a pas la définition de SHA1 au moment ou il rencontre SHA1 *sha1;
2) Inclure ce qu'il faut pour qu'il ait cette definition à ce moment la. En principe hl_sha1wrapper.h contient un #include "hl_types.h" qui contient la def de cette classe, mais on dirait que la, il est pas trouvé, donc si il y a cet #include dans hl_sha1wrapper.h c'est que le fichier n'est pas trouvé, ou que quand il est lu, il saute la définition de SHA1  (un #ifdef ?)
A+,

Message cité 1 fois
Message édité par gilou le 18-02-2011 à 18:15:33

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 18-02-2011 à 20:04:28    

gilou a écrit :

1) Ben clairement, il a pas la définition de SHA1 au moment ou il rencontre SHA1 *sha1;
2) Inclure ce qu'il faut pour qu'il ait cette definition à ce moment la. En principe hl_sha1wrapper.h contient un #include "hl_types.h" qui contient la def de cette classe, mais on dirait que la, il est pas trouvé, donc si il y a cet #include dans hl_sha1wrapper.h c'est que le fichier n'est pas trouvé, ou que quand il est lu, il saute la définition de SHA1  (un #ifdef ?)
A+,


 
Ok. je verrai ca plutard. Mais j'ai pensé à une solution temporaire pour que mon code compile :
 
en fait les erreurs se trouvent dans le fichier dummyupd.cpp, un fichier source que je n'utilise pas pour l'instant. ce fichier inclut l'entête hashlibpp.h que j'ai alors commenté. Du coup je dois "désactiver" les instructions qui se rapportent à cette librairie. Heureusement ces instructions en questions sont regroupées dans une fonction de vérification qui renvoie 0 si tout va bien et -1 sinon.
 
Ma question :
 
il y a t - il un moyen de "desactiver" le code de la fonction de verif de telle sorte que quand je compile, je n'ais plus d'erreur ?
j'ai entendu parler de #IF 0 ... #ENDIF mais je ne sais pas comment s'en servir de ce macro pour désactiver.

Reply

Marsh Posté le 18-02-2011 à 22:27:28    

Désolé, mais je ne cautionne pas la programmation vaudou et autres "solution temporaire pour que mon code compile".
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed