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

    +135.2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    #define DBGLEVEL2 2
    #define ER2 if (o.dbglvl>=DBGLEVEL2) fprintf(stderr,
    
    some_fun(int errorcode) 
    {
      ER2 " Error %d", errocode);
    }

    Использование незакрытых скобок внутри #define

    Запостил: lolikandr, 12 Августа 2009

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

    • Человека вообще близко нельзя к препроцессору подпускать.
      Ответить
    • от это кривые ручки и я понимаю! человек знает толк в извращениях
      Ответить
    • Мдя :)..

      Хотя у меня частенько используется эквивалент подобному:
      #ifdef DEBUG
      #define OUTDEBUG(a) printf("debug: %s\n", a)
      #define DEBUGCODE(code) code
      #define dprintf printf
      #else
      #define OUTDEBUG(a) {}
      #define DEBUGCODE(code) {}
      #define dprintf(...) {}
      #endif
      Ответить
      • тут хоть скобки закрываются, в коде будет выглядет почти как настоящая функция, покрайней мере для дебага сойдет, а там навоз такой что скобками прикрывать приходится чтоб компилятор не видел
        Ответить
    • Выглядит некрасиво, но если придётся задефайнить что-то типа
      printf("I=%d, K=%d, N=%d, name=%s\n",I,K,N,
      А после в 10 местах написать .... "name8");
      Писать хреннадцать раз одну и ту же фигню только для дебага? Лучше написать говнокод.
      Ответить

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