Кресты / Говнокод #21256 Ссылка на оригинал

0

  1. 1
  2. 2
Зачем в плюсах и сишке костыль void? Можно ведь было сделать struct void {};
А вместо войдзвездочки использовать char*.

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

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

  • У void немало специального поведения. Например, в сишке:

    typedef struct { } void_t;
    void_t* tmalloc(size_t s);
    int main() {
        int* s1 = malloc(10);    // OK
        int* s2 = tmalloc(10);  // error
    
        int a = 0;
        (void) a; // OK
        (void_t) a; // error
    }


    Лучше спроси, зачем в C++11 запилили std::nullptr_t 🙂
    Ответить
    • >>Лучше спроси, зачем в C++11 запилили
      Я думаю что за вопросы "а зачем в С++ добавили" бьют в лицо
      Ответить
    • > int* s1 = malloc(10);
      не стоит целого костыля void

      > (void) a;
      ненужно
      Ответить
      • >>не стоит целого костыля void
        а как бы ты сделал? char* ?
        Ответить
        • всё ясно

          Хуесто на меня обиделся и не отвечает
          Пойду плакать
          Ответить
      • >> (void) a;
        > ненужно

        Ну это вроде бы указание lint'у, что я знаю, что у функции есть возвращаемое значение, но хочу его проигнорировать
        Ответить
        • В 17 крестах это ещё и указание, что я действительно не хочу никуда сохранять значение [[nodiscard]] функции.
          Ответить
    • >> malloc
      Раса Малоков негадует. Готовь ебало к самой надежной табуретке во вселенной, к тебе летит армия Малоков на звездолетах которых движет семеренка.
      Ответить
    • ... чтобы сделать nullptr. А еще - чтобы делать специализированные конструкторы от nullptr
      Ответить
  • >>А вместо войдзвездочки использовать char*.
    как я уже писал, в K&R так и было.

    Довольно очевидно зачем: чтобы явно показать что ты не знаешь размера, и таким образом отключить арифметку укозателей.
    Ответить

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

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

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


    8