実現したいこと
ビルドを完成したい。
発生している問題・分からないこと
【全てビルド】を実行すると
1.'BCRYPT_HASHSIZE': マクロが再定義されました。
2.'=': 間接参照のレベルが 'char *' と 'int' で異なっています。
3.'=': 間接参照のレベルが 'char *' と 'int' で異なっています。
と出てくる。このため?かビルドが完成しない
エラーメッセージ
error
1①C4005 'BCRYPT_HASHSIZE': マクロが再定義されました。 2②C4047 '=': 間接参照のレベルが 'char *' と 'int' で異なっています。 3③C4047 '=': 間接参照のレベルが 'char *' と 'int' で異なっています。
該当のソースコード
#ifndef BCRYPT_H_ #define BCRYPT_H_ ①⇒#define BCRYPT_HASHSIZE (64) #ifdef __cplusplus extern "C" { #endif workf = (factor < 4 || factor > 31)?12:factor; ②⇒ aux = crypt_gensalt_rn("$2a$", workf, input, RANDBYTES, salt, BCRYPT_HASHSIZE); return (aux == NULL)?5:0; } int bcrypt_hashpw(const char *passwd, const char salt[BCRYPT_HASHSIZE], char hash[BCRYPT_HASHSIZE]) { char *aux; ③⇒ aux = crypt_rn(passwd, salt, hash, BCRYPT_HASHSIZE); return (aux == NULL)?1:0; } int bcrypt_checkpw(const char *passwd, const char hash[BCRYPT_HASHSIZE]) { int ret; char outhash[BCRYPT_HASHSIZE]; ret = bcrypt_hashpw(passwd, hash, outhash); if (ret != 0) return -1; return timing_safe_strcmp(hash, outhash);
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
詳しく聞く方がいなかったので、chatGPTで試行錯誤したが、まったく改善しなかった。
補足
どうか、お力をお貸しください、よろしくお願いします。
質問で提示されているソースコードは以下でしょうか?
libbcrypt/bcrypt.c at master · rg3/libbcrypt
https://github.com/rg3/libbcrypt/blob/master/bcrypt.c
その場合、BCRYPT_HASHSIZE の再定義に関しては、既にヘッダファイル(bcrypt.h)で定義されていることが原因と思われます。
> ①C4005 'BCRYPT_HASHSIZE': マクロが再定義されました。
https://github.com/rg3/libbcrypt/blob/master/bcrypt.h#L17
#define BCRYPT_HASHSIZE (64)
そうです。②は158と③166にエラーがでていています。
①については
#ifndef BCRYPT_HASHSIZE
#define BCRYPT_HASHSIZE 64
#endif
で消えました!
