2013-05-18 121 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

您可以在任何可以使用結構的地方使用未命名的結構 - 唯一的區別是它沒有得到可以在其他地方使用的名稱。你可以在任何你可以使用類型的地方聲明一個新類型,非常多。在大多數地方這樣做可能並不是特別有意義,但這是另一回事。

我不會完全推薦這個,除非是非常特殊的情況,但它是有效的。