C:创建一个变量依赖于运行时函数的静态数组?
C: Creating a static array with variable dependent on runtime functions?
由于静态数组是在编译时创建的,我可以使用通过例如获取的变量来设置数组的长度吗?另一个功能?我相信这取决于编译器是否足够聪明,知道这个变量会有什么值?
我通过 snprinf()
获取尺寸的示例代码。使用带有 -Wall
标志的 gcc 编译此代码,没有错误或警告。
#include <stdio.h>
int main(void)
{
int mac[6] = {0xAA,0xBB,0xCC,0xDD,0xEE,0xFF};
int size = snprintf(NULL, 0, "%02X", mac[0]);
char str[size + 1];
snprintf(str, size + 1, "%02X", mac[0]);
printf("%s\n", str);
return 0;
}
编译和 运行 结果:
AA
为什么这可能?
str
不是静态数组,它是 C 语言中的 VLA,可变长度数组。
由于静态数组是在编译时创建的,我可以使用通过例如获取的变量来设置数组的长度吗?另一个功能?我相信这取决于编译器是否足够聪明,知道这个变量会有什么值?
我通过 snprinf()
获取尺寸的示例代码。使用带有 -Wall
标志的 gcc 编译此代码,没有错误或警告。
#include <stdio.h>
int main(void)
{
int mac[6] = {0xAA,0xBB,0xCC,0xDD,0xEE,0xFF};
int size = snprintf(NULL, 0, "%02X", mac[0]);
char str[size + 1];
snprintf(str, size + 1, "%02X", mac[0]);
printf("%s\n", str);
return 0;
}
编译和 运行 结果:
AA
为什么这可能?
str
不是静态数组,它是 C 语言中的 VLA,可变长度数组。