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

    +1006

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    if(cond) {
          #define INIT_COUNT 1
    } else {
          #define INIT_COUNT 2
    }

    Тот, кто показал мне этот кусочек кода, был очень удивлем тем , что все время выполняется только ветка else.

    Запостил: refactor, 05 Августа 2015

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

    • gcc, например, без всяких -Wall предупреждает:
      main.c: In function ‘main’:
      main.c:7:0: warning: "INIT_COUNT" redefined
               #define INIT_COUNT 2
       ^
      main.c:5:0: note: this is the location of the previous definition
               #define INIT_COUNT 1
       ^
      Ответить
    • Вариация на тему:
      #if cond
          init_count = 1;
      #else
          init_count = 2;
      #endif
      Ответить
      • Чо не так?
        Ответить
      • Ну эту вариацию хотя бы можно применить, если очень хочется :)
        Ответить
        • Да и ту тоже можно, если дописать немного кода между переопределениями.
          Ответить
          • Ну разве что #undef добавить. Без него не скомпилится.
            Ответить

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