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

    +2

    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
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    chek_LD(void)
    {
    	LOCK_DETECT = read();
    	if (LOCK_DETECT == SAVE_LOCK_DETECT)
    	{
    		return;
    	}
    	if (LOCK_DETECT == 0)
    	{
    		LOCK_DETECT = read();
    		if (LOCK_DETECT == 0)
    		{
    			if (LOCK_DETECT != SAVE_LOCK_DETECT)
    			{
    				SAVE_LOCK_DETECT = 0;
    			}
    		}
    	}
    	else
    	{
    		delay_us(5);
    		LOCK_DETECT = read();
    		if (LOCK_DETECT == 1)
    		{
    			if (LOCK_DETECT != SAVE_LOCK_DETECT)
    			{
    				SAVE_LOCK_DETECT = 1;
    			}
    		}
    	}
    	return;
    }

    пришел на легаси проект. обожаю глобальные переменные на весь проект. еще больше обожаю логику)

    Запостил: viteo, 29 Декабря 2020

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

    • Добро пожаловать!
      Ответить
    • > глобальные пельменные

      Да ещё и с именами как у констант макросов.
      Ответить
      • Кстати, что с такой питушнёй обычно делают? (Кроме перехода на Haskell и ссылочную прозрачность)
        Бывает же действительно, когда константа совершает каминг-аут и признаётся, что ей нравится менять свои значения. И игнорировать это нельзя, и какие-то питухи уже используют её, и могут сломаться.
        Ответить
        • Вешаются.

          Ну или меняют версию с 2.34 на 3.0 с отстрелом обратной совместимости.
          Ответить
    • железячник писал
      Ответить
    • Сложно, переведи на promela.
      Ответить
    • Кстати, за read() он когда-нибудь получит граблями по ебалу если этот код на posix'е будут запускать.
      Ответить
      • да, можно случайно вызвать никсовый сись кол
        Ответить
        • Вряд ли. Скорее наоборот, вместо никсового получить эту хрень. Свои символы вроде сильнее библиотечных.
          Ответить
          • Думаю, годный линкер может тебя о таком предупредить. А у кого приоритет -- не знаю, может быть, ты и прав.

            Алсо, если к тебе в хедеры проберется unistd.h, то ты можешь быть выебан еще компилятором, если конечно он не 1989-го года выпуску
            Ответить
            • > компилятором

              Ну это если ты оба хедера смешаешь...
              Ответить
              • если там будет юнистд, то компилятор тебя отругает за непередачу туда параметров, хотя в древней сишечке это вроде и не ошибка, а если будет и твой и юни, то будет жлоба на редеклерейшн, ни?
                Ответить
                • Да. Непередача параметров вроде всегда ошибкой была если в прототипе типы перечислены. Для этого и (void) в функциях без аргументов, пустые скобки допускают любой вызов.
                  Ответить
                  • точно, а разгадка в том, что в древности параметры вообще не указывали, а затем указывали по еблански

                    petuh()
                    int, int

                    вроде
                    Ответить

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