[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: gcc bug?



> > а править мейк тоже нехорошо (пакет ведь собираем, а на другой системе
> > могут не пересобрать)
> > и как быть?
> 
> make CC=gcc3.4 CFLAGS='-pipe -O3 -g0 -w' и так далее в debian/rules
> 
> configure из среды берет или также как make в зависимости от версии.
> 
> Наличие gcc3 проверять перед тем.
> 
> > PPS: кстати, знатоки плюсов, объясните мне смысл конструкции:
> > int a[0]={};
> > 
> > это что просто указатель, который можно юзать только как указатель?
> 
> Это не плюсы, это C.
> 
> Это массив с нулевой длиной и его инициализация.
> 
> Указатели и массивы - совсем разные вещи. Путаница у вас "классическая",
> хорошо известная.
то что массив я вижу
я не понимаю смысла
в чем смысл масива с нулевой длиной кроме как использование
идентификатора как указателя?
можете привести пример?
C не поддерживает динамическое изменение размеров массива и где можно
применить массив с нулевой длиной я понять не могу


> 
> > в смысле компилятор будет ругаться на применение любого индекса с ним?
> > или что?
> 
> Не обязан.
> 
> Эту конструкцию применяют обычно в конце структур заголовок - данные,
> чтобы можно было сослаться на начало данных без извращений с адресной
> арифметикой.
то есть что-то вроде
struct
{
  unsigned char byte[0];

  int data1;
  char data2;
  ...
} a;
чтобы обращаться к a.data1 как к a.byte[0], a.byte[1]... ?

и что компилятор ТАКОЕ допускает?!
по моему это большее извращение чем ((unsigned char *)&a)[index]


> Если виртуальная память закончилась, она ненастоящая.
наверно китайская подделка?
;)



Reply to: