2013-05-18 38 views
4

在一个SO线程,我见过的无名struct充当在for循环中不同类型的多个变量的占位符的使用:无名struct声明for循环初始化语句

例如:

for(struct { 
     int i; 
     double d; 
     char c; 
    } obj = { 1, 2.2, 'c' }; 
    obj.i < 10; 
    ++obj.i) 
{ 
    ... 
} 

This compiles fine with g ++。
这是一个标准的C++ 03语法吗?

+3

我很确定这是确定的。 – chris

+0

+有趣,它也有可能在c99中 –

+1

啊,发现它:http://stackoverflow.com/a/889001/962089 – chris

回答

2

您可以在任何可以使用结构的地方使用未命名的结构 - 唯一的区别是它没有得到可以在其他地方使用的名称。你可以在任何你可以使用类型的地方声明一个新类型,非常多。在大多数地方这样做可能并不是特别有意义,但这是另一回事。

我不会完全推荐这个,除非是非常特殊的情况,但它是有效的。