结构体零长数组的妙用及warning C4200:使用了非标准扩展:结构/联合中的零大小数组解决
2015-07-22 14:06
337 查看
// 零长数组:用于结构体的末尾,本身不占用空间,因此对sizeof没有影响,但有利于实现可变程度的数组
// 如果有点编译器不支持,为了通用型,可以换成1长数组
结构体
struct m
{
short x,max;
int data[0]
}
以上结构体在VC2010编译器下产生如下报警:
warning C4200:使用了非标准扩展:结构/联合中的零大小数组
改成
struct m
{
short x,max;
int data[1]
}
即可通过编译。
使用方法
struct m *temp=(struct m*)malloc(sizeof(struct m)+100);
int i;
for(i=0;i<100;i++)
{
printf("%d -%d\n",i,temp->data[i]);
}
free(temp);
// 如果有点编译器不支持,为了通用型,可以换成1长数组
结构体
struct m
{
short x,max;
int data[0]
}
以上结构体在VC2010编译器下产生如下报警:
warning C4200:使用了非标准扩展:结构/联合中的零大小数组
改成
struct m
{
short x,max;
int data[1]
}
即可通过编译。
使用方法
struct m *temp=(struct m*)malloc(sizeof(struct m)+100);
int i;
for(i=0;i<100;i++)
{
printf("%d -%d\n",i,temp->data[i]);
}
free(temp);
相关文章推荐
- md5算法代码
- 读Spring的源代码一:Spring bean的注册过程
- BSD历史
- From MSI to WiX, Part 4 - Features and Components by Alex Shevchuk
- Integer的自动装箱过程
- Poco for Windows 编译 x86 x64
- ios json解析 碰到有转义字符的解决方法
- spring mvc 4.1.5+mybatis 3.2.6+ maven
- 利用Loader来动态加载不同的QML文件来改变UI
- android.os.handler
- ARM寄存器介绍
- win8 远程桌面时提示凭证不工作问题的终极解决办法
- Codeforces 445B——并查集或DFS——DZY Loves Chemistry
- achartengine之折线图---简单用法
- 单例
- Java 的Excel 导出功能的实现
- 编译原理学习基本概念汇总
- codevs1052
- hihoCoder - 1051 - 补提交卡(贪心、枚举)
- 快速找出两个字符串中所有相同的字符