是否可以将 C 数据类型存储在变量中?
像这样的东西:
void* type = (byte*);
这是一个场景,我编写了一个测试用例,并尝试使用某些数据类型打印出一个字节数组,以便在 printf 中使用,具体取决于给定的参数:
void print_byteArray(const void* expected, size_t size,
bool asChars, bool asWCharT) {
int iterations;
char* format;
if (asChars) {
iterations = (size / (sizeof (char)));
format = "%c";
} else if (asWCharT) {
iterations = (size / (sizeof (wchar_t)));
format = "%lc";
} else {
iterations = (size / (sizeof (byte)));
format = "%x";
}
int i;
for (i = 0; i < iterations; i++) {
if (asChars) {
printf(format, ((char*) expected)[i]);
} else if (asWCharT) {
printf(format, ((wchar_t*) expected)[i]);
} else {
printf(format, ((byte*) expected)[i]);
}
}
fflush(stdout);
}
这看起来像低效的代码。我想人们可以将 for 循环体缩小为一行:
printf(format, ((type) expected)[i]);