1. Си / Говнокод #16742

    +121

    1. 1
    int main(void)

    Запостил: GreenKiller, 21 Сентября 2014

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

    • где лопата?
      Ответить
      • void
        Ответить
        • int main(void arg)

          А так можно?
          Ответить
          • вы чё серьёзно С забыли/не знаете?

            http://en.wikipedia.org/wiki/Entry_point#C_and_C.2B.2B
            Ответить
            • Я в курсе, но мне это кажется нелогичным.

              По логике если void — это наименование типа, то после него должно следовать имя переменной. Если же это отдельная синтаксическая конструкция, эквивалентная пустым скобкам, то что тогда делает в языке конструкция void *?

              Фигня ваша сишечка. То ли дело Javascript, в котором над void'ом можно выполнять операции.
              Ответить
              • фигня, никто не оспаривает. но по англиски то нормально читается ;)

                насколько мне известно, void как отсутствие аргументов это больше пережиток прошлого, присутствующий в языке с самого начала.

                `void *` - нужен был тип для абстрактного указателя. сделали его из войда. но логику сильно это не нарушает, потому что доступаться к памяти по такому указателю нельзя. (в старые времена, pre-ANSI, разыменовывание `void *` было аналогично `char *`, т.е. побайтовый доступ к памяти.)
                Ответить
              • она не эквивалентна пустым скобочкам. Пустые скобки значат что можно сколько угодно параметров передавать.
                http://ideone.com/Ew1675
                Ответить
          • > А так можно?

            нет.

            `void` вместо аргументов это просто знак отсутствия аргументов.

            void, буквально.
            Ответить
    • Не, ребята, здесь всё норм. По стандарту С89 отсутствие аргументов у функции описывается -- (void)
      Ответить
      • И это полное уебанство.
        Ответить
        • Чего?
          Ответить
          • Того. Нет параметров - значит между скобок нихуя не надо. А если параметров хз сколько - значит троеточие пусть будет. Ну как в крестах короче.
            А в нынешнем виде это нарушение гармонии и полнейшее уебанство. Как и много других моментов в уебищной сишке.
            Ответить
            • Хорошо, что вышеупомянутаго уебанства нет и въ кошерных делфяхъ.
              Ответить
              • Там есть другое уебанство - функция без параметров не требует скобочек, из-за этого вызов функции путается с указателем на функцию. Причём так как пустые скобки отбрасывает ещё парсер, то
                f := MyFunc() тоже может означать указатель.
                Ответить
                • А теперь посмотрим, как сделали в FPC, и посчитаем, сколько собак нужно дописать, чтобы портировать код с дельфей...
                  Ответить
            • >А в нынешнем виде это нарушение гармонии и полнейшее уебанство.
              >Ну как в крестах короче.
              Я бы на кресты в плане гармонии равняться не стал.

              Однако у меня тоже всегда был определённый ДИСБАЛАНС от троякого назначения void в сишке.
              Именно то о чем выше говорит inkanus-gray void, как пустой тип возврата и void* как указатель.
              И если можно смириться с тем что void == отсутствие аргумента, то неявный варарг и void* напрягает.
              Ответить
        • K&R commands it. Your argument is invalid.
          Ответить
    • Въебал по минусу, чтоб неповадно было хуйню постить.
      Ответить

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