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

    +132

    1. 1
    assert(!"Can't change this parameter.");

    Запостил: k06a, 14 Мая 2010

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

    • я в мелких личных тестовых программах вместо assert(0) таким пользуюсь. но только в очень мелких, бо gcc на такое ворнинг кидает.

      удобно, хотя и львиная доля народа (кто не читали K&R) не рубит как оно работает.
      Ответить
      • А что на этот счет говорили K&R ? О преобразовании строкового литерала к int ?
        Ответить
        • отрицание к поинтерам применимо: это есть проверка на НУЛЛность и возращает int 0 или 1.

          то чего азов не читавшие не знают: строковый литерал он есть синтаксически поинтер (на строку; в С - char *, C++ - char const *).

          ассерт видит поинтер, который по определение не НУЛЛ, с отрицанием. в результате условие всегда ложно: ассерт выполнится, выдаст эту строку в сообщении и завершит программу.

          я пользуюсь изредка таким вот так:

          FILE *f;
          f = fopen(file_name,"r");
          assert( f && "Can't open file" );


          для продакшн код - ни в коем случае. для мелочёвки пятиминутной - в самый раз.
          Ответить
    • Ы =) я такое всегда в пока незаимплеменченные методы вколбашиваю -- чтобы потом не проебать =)
      Ответить

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