【发布时间】:2015-03-29 10:02:10
【问题描述】:
这里是C新手。 我写道:
typedef unsigned char HBLOCK[SHA512_DIGEST_LENGTH];
typedef unsigned char HPRINTABLE[sizeof(HBLOCK)*2];
typedef struct {
HBLOCK Primary;
HBLOCK *Part;
} FILE_HASH_MAP;
void blockhex(const HBLOCK *, HPRINTABLE *);
打算编写将HBLOCK转换为十六进制字符串的函数。但是,当我尝试测试单个字符是否可分配时
void blockhex(const HBLOCK *block, HPRINTABLE *printable)
{
printable[0]="6";
};
编译器说
error: incompatible types when assigning to type ‘HPRINTABLE’ from type ‘char *’.
这让我很困惑,因为我希望 HPRINTABLE typedef 能清楚地表明它是一个数组类型。 而且,当我这样称呼它时
FILE_HASH_MAP fhm;
HPRINTABLE prt;
blockhex(fhm.Primary,&prt);
编译器也说
warning: passing argument 1 of ‘blockhex’ from incompatible pointer type
和
note: expected ‘const unsigned char (*)[64]’ but argument is of type ‘unsigned char *’
当然,这些不是错误,但我还是想知道我做错了什么。
【问题讨论】: