find . -name '*.ear' -exec ls -lh {} \;
просто h дополнительное от ответа jer.drab.org. экономит время, преобразовывая в МБ мысленно;)
Все может быть немного яснее, если мы немного переформатируем код:
struct st { int a; } fn()
{
struct st obj;
obj.a = 10;
return obj;
}
int main()
{
struct st obj = fn();
printf("%d\n", obj.a);
return 0;
}
Таким образом, Тип возврата fn ()
- struct st {int a;}
. После определения структуры нет точки с запятой, так как тип структуры является частью определения функции (проследите грамматику из единицы перевода
-> объявление верхнего уровня
-> определение функции
). Тип структуры доступен для main ()
, потому что вы помещаете в него тег структуры (st). Если бы вы написали
struct { int a; } fn() {...}
, то этот тип был бы недоступен для main ()
; вам пришлось бы создать новый тип структуры с тем же определением.
Вы получите такой же эффект, как если бы вы написали
struct st {
int a;
};
struct st fn()
{
/* same as before */
}
int main()
{
/* same as before */
}
st
равен объявлен в глобальной области видимости и поэтому виден для main.