我有一个实用函数,当我为它提供一个结构时,它给了我一个单独字节的 char 缓冲区。
unsigned char complete[16] = { 0 };
char* construct_complete_array(socketType* m)
{
unsigned char *temp = (unsigned char*) m;
size_t j;
for (j = 0; j < sizeof(*m); j++)
{
complete[j] = *(temp);
printf("%.2x ", *(temp));
*temp++;
}
return complete;
}
int diff_bit_calc(socketType* datanode, socketType* knode)
{
char* result = construct_complete_array(datanode);
size_t j;
printf("\nPrinting result: \n");
for (j = 0; j < sizeof(*datanode); j++)
{
printf("%.2x ", *(result));
*result++;
}
}
我希望它是一个通用函数,当它提供一个结构时,它会返回一个结构的字符缓冲区。我可能有另一个调用,比如
char* result1 = construct_complete_array(knode);
(我不认为将其complete[16] buffer
作为全球性的好主意。将其本地化并返回它仍然是一个更糟糕的主意。)