【发布时间】:2020-12-04 10:19:14
【问题描述】:
由于静态数组是在编译时创建的,我可以使用通过例如获得的变量来设置数组的长度吗?另一个功能?我相信这取决于编译器是否可以足够聪明地知道这个变量将具有什么值?
获取尺寸槽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
为什么会这样?
【问题讨论】:
标签: arrays c static runtime compile-time