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

    +131

    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
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    /*
     * Copyright (C) 2007-2012 Allwinner Technology Co., Ltd.
     *
     * This program is free software; you can redistribute it and/or
     * modify it under the terms of the GNU General Public License as
     * published by the Free Software Foundation; either version 2 of
     * the License, or (at your option) any later version.
     *
     * This program is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the
     * GNU General Public License for more details.
     *
     * You should have received a copy of the GNU General Public License
     * along with this program; if not, write to the Free Software
     * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
     * MA 02111-1307 USA
     */
    
    #ifndef __DISP_DISPLAY_I_H__
    #define __DISP_DISPLAY_I_H__
    
    #include "ebios_de.h"
    #include "ebios_lcdc_tve.h"
    #include "drv_disp_i.h" /* For DISP_XXXXXX status codes */
    
    #define DE_INF __inf
    #define DE_WRN __wrn
    
    #define OSAL_IRQ_RETURN IRQ_HANDLED
    
    #define HANDTOID(handle)  ((handle) - 100)
    #define IDTOHAND(ID)  ((ID) + 100)
    
    #define INTC_IRQNO_SCALER0  SW_INT_IRQNO_DEFEBE0
    #define INTC_IRQNO_SCALER1  SW_INT_IRQNO_DEFEBE1
    #define INTC_IRQNO_LCDC0    SW_INT_IRQNO_LCDCTRL0
    #define INTC_IRQNO_LCDC1    SW_INT_IRQNO_LCDCTRL1
    
    #define MAX_SPRITE_BLOCKS   32
    
    /*basic data information definition*/
    enum {
    	FALSE = 0,
    	TRUE
    };
    
    #define DIS_NULL 0
    
    #define BIT0    0x00000001
    #define BIT1	0x00000002
    #define BIT2	0x00000004
    #define BIT3	0x00000008
    #define BIT4	0x00000010
    #define BIT5	0x00000020
    #define BIT6	0x00000040
    #define BIT7	0x00000080
    #define BIT8	0x00000100
    #define BIT9	0x00000200
    #define BIT10	0x00000400
    #define BIT11	0x00000800
    #define BIT12	0x00001000
    #define BIT13	0x00002000
    #define BIT14	0x00004000
    #define BIT15	0x00008000
    #define BIT16	0x00010000
    #define BIT17	0x00020000
    #define BIT18	0x00040000
    #define BIT19	0x00080000
    #define BIT20	0x00100000
    #define BIT21	0x00200000
    #define BIT22	0x00400000
    #define BIT23	0x00800000
    #define BIT24	0x01000000
    #define BIT25	0x02000000
    #define BIT26	0x04000000
    #define BIT27	0x08000000
    #define BIT28	0x10000000
    #define BIT29	0x20000000
    #define BIT30	0x40000000
    #define BIT31	0x80000000
    
    
    #endif

    Нашёл в драйвере дисплея. Вместо 1<<N.

    Запостил: mittorn, 13 Сентября 2014

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

    • У них ещё неподалёку есть строчка #include "D:/winners/eBase/eBSP/BSP/sun_20/common_inc.h"
      Ответить
      • #include "C:/Users/Дункан Маклауд/Desktop/Новая папка (3)/дрова/дрова_new_new/не_удалять/winners/eBase/eBSP/BSP/sun_20/common_inc.h"
        Ответить
        • Интересно, пробелы случаем не нужно экранировать (ну а вдруг?)
          Ответить
          • Надо писать в стандарте коротких имён 8.3 сразу.
            Ответить
          • Емнип, в том же mingw бесполезно их экранировать, ибо его make ни в каком виде их не переваривает...
            Ответить
      • Смотрите, как делают настоящие профессионалы (тайваньский сайт Микрософта): https://archive.today/F3BFS

        Над надписью „(4.2 MB)“ ссылка: file:/H:/microsoft_case/1030/midtown2/video/midtown2.avi
        Ответить
    • Зачем постить Copyright line?
      Ответить
      • Согласно требованиям GNU GPL:
        You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program.
        Ответить
        • >You should have received a copy of the GNU General Public License
          > along with this program; if not, write to the Free Software
          > Foundation, Inc., 59 Temple Place, Suite 330, Boston,
          > MA 02111-1307 USA
          Что-то я не получил копию GPL в этом посте. Я теперь обязан им на почту писать?
          Ответить
          • Ну все, дедушка Штольман заставит ОП'а жрать мозоли...
            Ответить
    • #define BIT(x) (1 << (x))


      Fixed?
      Ответить
      • UB BIT(32) не отвалится на этапе компиляции.
        Ответить
        • #define BIT(x) (((x) < 0 || (x) > 31) ? 1/0 : (1 << (x)))
          Ответить
        • Ну и, кстати, gcc выдало: warning: left shift count >= width of type. Так что хрен с ним, с отваливанием.
          Ответить
        • I present you C++:

          #include <iostream>
          
          template <int bit_id> class bit_value {
          };
          
          template <> class bit_value<0> {
          public:    
              static unsigned long value;
          };
          unsigned long bit_value<0>::value = 0;
          
          int main() {
              std::cout << bit_value<0>::value << std::endl;      // OK, 0
              std::cout << bit_value<1>::value << std::endl;      // ERROR
              return 0;
          }
          Ответить
          • Не зря таки в С++14 ввели префикс для бинарных констант.
            Ответить
          • всегда когда такое вижу, пытаюсь в голове написать реализацию обработки исключений в обработчике прерываний...
            Ответить
            • А еще можно из обработчика прерываний повызывать new и delete...
              Ответить
      • нет. правильно:
        #define BIT(x)  (1u << (x))
        Ответить
    • Что примечательно, с этим драйвером firefox на ГК периодически падает. Да и все картинки с синим фоном получаются.
      Ответить
    • Правильно делать так:
      #define BIT_T(type, x) ((type)(1) << (x))

      А то вдруг BIT(63) нужно будет сделать
      Ответить

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