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

    +136

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    #define alias long
    #define int b
    #define cat 2
    alias int=cat;
    #undef int
    
    int a$(int b)
    {
      return 1;
    }
    
    main()
    {
      return a$(b)+1;
    }

    Здесь нет С++, зато есть... bash!
    На что спорим, что код возврата программы будет 1?

    Запостил: nil, 05 Февраля 2010

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

    • Что-то смущает меня '$' в идентификаторе... /r/еквестирую комментарий от КО, если не трудно.
      Ответить
      • вполне законно, вон, в VMS их было очень много: sys$blabla() и все такое.
        Ответить
      • И вообще, хоть «int \ubeef»
        Стандарт допускает дополнительные символы реализации и универсальные имена символов (кстати и русские — ждем сишные программы с русскими идентификаторами!)
        Ответить
        • Идентификатор \u0425\u0443\u0439
          компилировалось gcc -c -std=c99 -fextended-identifiers
          nm aaa.o:
          0000000000000000 T a$
          0000000000000000 D b
          000000000000000e T main
          0000000000000004 C Хуй
          Ответить
    • будет ошибка во время выполнения и следовательно, да, код возврата будет 1
      Ответить
      • Ошибка выполнения как программы C или как скрипта? Я проверил, вроде, и так и так на моем линуксе работало.
        Когда выполняется как скрипт, до куска с main не доходит, так что там можно было оступить от чистоты синтаксиса, поскольку интерпретатору уже пофиг.
        Ответить
        • Я что-то не так понял?

          $ cat kk.c
          #define alias long
          #define int b
          #define cat 2
          alias int=cat;
          #undef int

          int a$(int b)
          {
          return 1;
          }

          main()
          {
          return a$(b)+1;
          }

          $ cc kk.c -o kk
          $ ./kk; echo $?
          2
          $ bash ./kk.c ; echo $?
          ./kk.c: line 7: int: command not found
          ./kk.c: line 7: int: command not found
          ./kk.c: line 9: return: can only `return' from a function or sourced script
          0
          $
          Ответить
          • А... Ясно, я-то запускал . kk.c чтобы return сработал.
            А в bash-е алиасы работают только в интерактивном режиме (если нет соответствующей опции).
            Ответить
    • С++
      O_o
      Ответить
    • клёвый говнокод)
      Ответить
    • #include <stdio.h>
      #pragma warning (disable: 4996)
      #define if for
      void main()
      {
      	int i = 0;
      	if (i = 0; i < 11; i++)
      	{
      		puts("SHIT!\n");
      	}
      }

      И это работает!
      Ответить
      • какое достижение! анонимус открыл для себя препроцессор
        code_monkeys++
        Ответить
        • В рядах code monkeys прибавилось.
          Ответить
          • В рядах заместителей Капитана Очевидность прибавилось.
            Ответить
            • В рядах задротов, вечно сидящих и дрочащих на говнокоде прибавилось.
              Ответить
              • В рядах заместителей Капитана Очевидность убавилось.
                Ответить
                • КО имеет право брать и уволнять своих заместителей?
                  Ответить
              • долбоебов прибавилось
                Ответить

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