假设我有一个与此对象相似的对象:
struct MenuDef
{
int titleResourceId;
struct MenuItemDef {
char* name;
int value;
SomeFunctionPtr someFactory;
} menuItems[10];
};
初始化如下:
const MenuDef m = {
1,
{
{
"zero",
0,
(SomeFunctionPtr) & MenuButton::factory,
},
{
"one",
1,
(SomeFunctionPtr) & MenuButton::factory,
},
{
"two",
2,
(SomeFunctionPtr) & MenuButton::factory,
},
}
};
可以安全地假定
m.menuItems[3].someFactory == 0
吗? 例如在这样的循环中:
for ( int i = 0; m.menuItems[i].someFactory != 0; ++i)
还是为了安全起见我必须插入最后一个元素来手动标记数组结尾吗?
...
{
"two",
2,
(SomeFunctionPtr) & MenuButton::factory,
},
{
"",
0,
(SomeFunctionPtr) 0,
},
...
最佳答案
我相信按照8.5.1 / 7的要求是安全的:
提醒一句 :