我在一个小程序中得到了这个代码来读取文件
#ifdef WIN32
unsigned char *buffer = (unsigned char *)alloca((unsigned int)ui.length);
#else
unsigned char buffer[ui.length];
#endif
有人可以告诉我,为什么指针用于win32平台,而字符数组用于其他平台?
答案 0 :(得分:2)
该代码旨在声明在编译时未知的长度数组。它可能是假设Windows目标的C ++编译器不支持声明这样的数组(例如,Visual C ++不支持它)。因此,当为Windows目标进行编译时,alloca()
函数用于实现相同的效果。
答案 1 :(得分:1)
我想用于WIN32编译的编译器不支持C99可变长度数组声明。