В одном из потоков SO я видел использование неназванного struct
выступая в качестве заполнителя для нескольких переменных разных типов внутри цикла for:
Например:
for(struct {
int i;
double d;
char c;
} obj = { 1, 2.2, 'c' };
obj.i < 10;
++obj.i)
{
...
}
это компилирует нормально с g ++.
Это стандартный синтаксис C ++ 03?
Вы можете использовать безымянную структуру везде, где можете использовать структуру, с той лишь разницей, что она не получает имя, которое можно использовать где-то еще. Вы можете объявить новый тип везде, где можете использовать тип. Это может не иметь особого смысла в большинстве мест, но это другой вопрос.
Я бы точно не рекомендовал это, кроме как в очень особых случаях, но это действительно.
Ниже код будет работать на C ++ (g ++ 5.4.0).
//g++ 5.4.0
#include <iostream>
#include <stdio.h>
int main()
{
int i = 0;
for(struct st{ int a[9]; }t;i<3;i++)
printf("%d\n", t.a);
}
И ниже код будет работать в C (gcc 5.4.0).
//gcc 5.4.0
#include <stdio.h>
int main()
{
int i = 0;
struct st{ int a[9]; }t;
for(;i<3;i++)
printf("%d\n", t.a);
}