Няшная / Говнокод #15843 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
#define PIXEL_PARTS_NUM 3

typedef struct _pixel {
        char parts[PIXEL_PARTS_NUM];
} pixel;

Запостил: evg_ever evg_ever, (Updated )

Комментарии (21) RSS

      • Зато если её передать в функцию, то передастся структура, а не какого-то хуя только указатель на первый элемент.
        Ответить
        • Ну и вернуть из функции можно, в отличие от массива.

          А еще - типа безопасность: эту структуру нельзя случайно передать в функцию, которая принимает char *.
          Ответить
        • Ты взрослый мальчик и должен уметь пользоватся презервативом адресной арифметикой. Ато начинатется, сперва обернем массив, потом внедрим в обьект методы что возвращают количество элементов, потом понадобятся методы выборки, а потом и изменения размера "на лету" - то все от лукавого.
          Ответить
    • в первой строке. как если бы графику вот так легко можно переносить с одного color space'а в другой.
      Ответить
  • На счет структуры из одного поля не соглашусь. Это хак.
    char parts[0] - Error.

    struct _pixel {
    char parts[0]; //OK!
    }
    Ответить
    • Щито, на этом статические проверки условия в крестах основаны, на том, что массив нулевой длины нигде не может существовать.
      Ответить
      • Это в крестах минимум 1. А в сишке внутри структур можно описать массив нулевой длины. Я когда-то даже поюзал эту фишку вот так:
        typedef struct foo_ {
            size_t count;
            item items[0];
        } foo;
        
        foo * alloc_foo(size_t count) {
            return malloc(sizeof(foo) + sizeof(item) * count);
        }
        Ответить
  • TarasB:
    Если, не ошибаюсь,
    struct Foo (size_t count)
    {
      item[count] items;
    };

    это С++? Я могу ошибаться, но кажется, что в С++ структуры представлены в виде объектов с паблик полями и без методов?
    Ответить
    • В обоих случаях ошибаешься. Это Ада с синтаксисом сей и в С++ структуры могут иметь методы, а отличаются только тем что по умолчанию там public, а в классах private.
      Ответить
      • С наследованием по умолчанию еще аналогичная шняга. У структур оно по умолчанию публичное.
        Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8