- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
#include <stdio.h>
#include <inttypes.h>
typedef struct {uint32_t dummy;} str32;
int main (void)
{
// тут получаются нули
printf("%zu\n", sizeof( struct {uint32_t;} ) );
printf("%zu\n", sizeof( (struct {uint32_t;}){} ) );
// а тут получаются 4 как и планировалось
printf("%zu\n", sizeof( str32 ) );
printf("%zu\n", sizeof(uint32_t) );
return 0;
}
Попытки получить размер анонимной структуры. Компиляторы clang gcc icc под линупсом почему-то возвращают 0. Не может же это быть багом сразу в трех компиляторах?
j123123 29.01.2016 05:28 # +1
то все нормально получается. Удивительно!
bormand 29.01.2016 06:24 # 0
warning: struct has no members
Вот интересно, почему это всего лишь ворнинг...
j123123 29.01.2016 06:31 # 0
http://melpon.org/wandbox/permlink/Bs8OSY7oTtg1spMO нет такого ворнинга у меня
bormand 29.01.2016 06:36 # 0
Но вообще и declaration does not declare anything как бы намекает, что произошла какая-то хуйня... Интересно, зачем вообще разрешили пустые декларации без переменных. В крестах это таки ошибка.
Antervis 29.01.2016 06:47 # 0
TarasB 29.01.2016 12:02 # 0
А то знаешь, "не все члены структуры инициализируются в конструкторе". Или "вы исползуете стандартную функцию такую-то, используйте вместо неё нашу ни с чем не совместивую функцию" (это из эмэсвэцэ).
bormand 29.01.2016 17:54 # 0
Bobik 29.01.2016 20:28 # 0
roman-kashitsyn 29.01.2016 12:26 # +1
Меня больше интересует, почему функция, не возвращающая значение, является только ворнингом, да ещё и не включенным по дефолту.
Soul_re@ver 30.01.2016 22:28 # 0
bormand 31.01.2016 07:34 # 0
Ну и сегодня этой ситуации не может быть никогда, а завтра вася добавил новое значение в енум или условие цикла поправил... Никогда не говори никогда :)
Soul_re@ver 01.02.2016 11:56 # +1
Кстати, когда-то ГЦЦ подобным образом реагировал даже на пути с abort или exit. Приходилось писать return huinya; после безусловного аборта.
bormand 31.01.2016 07:53 # +4