1. C++ / Говнокод #3514

    +162

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    //В H:
    //...
    #define Addr Byte
    //...
    
    
    //В СРР:
    //...
    bool Eraxcs(Addr b)
    {
      assert(sizeof(b)>0);
      //...

    Запостил: Говногость, 19 Июня 2010

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

    • Заменить на assert(true);
      Ответить
      • а мне смешнее оцуцтвие нелюбовь к тайпдефам.
        Ответить
    • sizeof может вернуть 0 когда-нибудь?
      Ответить
      • gcc/c (не знаю, как с++):
        struct s { };
        
        int main(void)
        {
            printf("%d\n", sizeof(struct s));
        }


        Output: 0.
        Ответить
        • По стандарту размер структуры не менее 1го байта. GCC тупит что-то.
          Ответить
          • это плюшка gcc, аха
            Ответить
            • Даже в самой последней версии такой глюк есть?
              Ответить
              • это не глюк, а extension, вроде. только зачем он нужен, не знаю. для прототипирования, может.
                Ответить
        • Вот Пипец... Совсем охренели...
          Ответить
        • А майкрософт строго следует написаному в стандарте, но добавляет свои расширения, не меняющие оригинальный стандарт. Этакие фичи появляются.
          Ответить
          • gcc хотя бы компилит под большинство платформ, поэтому его неоригинальные, "непортабелные" расширения работают везде. а расшериния майкрософта будут работать только под виндой.
            Ответить
            • вообще майкрософт делает все эти расширения для явного вендор-локина, в то время как гцц - для удобства пользования. так что не надо сравнивать
              Ответить
    • а в моём компиляторе, что я пользуюсь:
      void func(void b)
      {
      sizeof(b) равняется 0. К слову сказать b тоже всегда равняется 0.
      Ответить
    • Нулевой sizeof может потребоваться для SFINAE
      Ответить
      • что такое сфинае?
        Ответить
      • Зачем он для SFINAE? Если для трансформации типа в константу, то бустовый enable_if прекрасно обходится структурами размеров 1 и 2.
        Ответить
    • Видимо это такая защита от последователей, которые могли бы поменять define на тип, имеющий нулевой размер. Непонятно только, почему она не сделана static_assert'ом. Ну и define вместо тайпдефа не рулит ни разу.
      Ответить

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