1. Куча / Говнокод #25048

    −2

    1. 1
    2. 2
    Представляю негодование Акопяна и Юрия Антонова, но ломать комедию я больше не могу.
    Пароль от этого файка  - ihkanus

    ...

    Мечта сбывается,
    И не сбывается.

    inkanus_gray, 03 Ноября 2018

    Комментарии (39)
  2. Си / Говнокод #25047

    +1

    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
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    #include <stdio.h>
    
    #define PRIM_CAT_(a, ...) a ## __VA_ARGS__
    
    #define PRIM_CAT(...) PRIM_CAT_(__VA_ARGS__)
    
    #define PRIM_JOIN(sep, a, ...) PRIM_CAT(PRIM_CAT(a, sep), __VA_ARGS__)
    
    #define PRIM_QUOTE_(...) # __VA_ARGS__
    
    #define PRIM_QUOTE(...) PRIM_QUOTE_(__VA_ARGS__)
    
    #define PRIM_EAT(...) /* nothing */
    
    #define PRIM_EXPAND(...) __VA_ARGS__
    
    #define PRIM_HEAD_(x, ...) x
    
    #define PRIM_HEAD(...) PRIM_HEAD_(__VA_ARGS__)
    
    #define PRIM_TAIL_(x, ...) __VA_ARGS__
    
    #define PRIM_TAIL(...) PRIM_TAIL_(__VA_ARGS__)
    
    #define PRIM_CHECK(...) PRIM_CHECK_N(__VA_ARGS__, 0)
    
    #define PRIM_CHECK_N(x, n, ...) n
    
    #define PRIM_PROBE(x) x, 1
    
    #define PRIM_TEST(...) int main(){puts(PRIM_QUOTE(__VA_ARGS__)); return 0;}
    
    #define BOOL_TO_BOOL(x) BOOL_COMPL(BOOL_NOT(x))
    
    #define BOOL_COMPL(x) PRIM_CAT(BOOL_COMPL_, x)
    #define BOOL_COMPL_1 0
    #define BOOL_COMPL_0 1
    
    #define BOOL_NOT(x) PRIM_CHECK(PRIM_CAT(BOOL_NOT_, x))
    #define BOOL_NOT_0 PROBE(?)
    
    #define BOOL_AND(x, y) PRIM_CAT(BOOL_AND_, x)(y)
    #define BOOL_AND_0(x) 0
    #define BOOL_AND_1(x) x
    
    #define BOOL_OR(x, y) PRIM_CAT(BOOL_OR_, x)(y)
    #define BOOL_OR_1(x) 1
    #define BOOL_OR_0(x) x
    
    #define BOOL_XOR(x, y) PRIM_CAT(BOOL_XOR_, x)(y)
    #define BOOL_XOR_1(x) BOOL_COMPL(x)
    #define BOOL_XOR_0(x) x
    
    #define BOOL_EQ(x, y) BOOL_COMPL(BOOL_XOR(x, y))
    
    #define ARITH_ADD_(a7, a6, a5, a4, a3, a2, a1, a0,   b7, b6, b5, b4, b3, b2, b1, b0) \
      BOOL_XOR(BOOL_XOR(a7, b7), BOOL_OR(BOOL_AND(a6, b6), BOOL_AND(BOOL_XOR(a6, b6), BOOL_OR(BOOL_AND(a5, b5), BOOL_AND(BOOL_XOR(a5, b5), BOOL_OR(BOOL_AND(a4, b4), BOOL_AND(BOOL_XOR(a4, b4), BOOL_OR(BOOL_AND(a3, b3), BOOL_AND(BOOL_XOR(a3, b3), BOOL_OR(BOOL_AND(a2, b2), BOOL_AND(BOOL_XOR(a2, b2), BOOL_OR(BOOL_AND(a1, b1), BOOL_AND(BOOL_XOR(a1, b1), BOOL_AND(a0, b0)))))))))))))), \
      BOOL_XOR(BOOL_XOR(a6, b6), BOOL_OR(BOOL_AND(a5, b5), BOOL_AND(BOOL_XOR(a5, b5), BOOL_OR(BOOL_AND(a4, b4), BOOL_AND(BOOL_XOR(a4, b4), BOOL_OR(BOOL_AND(a3, b3), BOOL_AND(BOOL_XOR(a3, b3), BOOL_OR(BOOL_AND(a2, b2), BOOL_AND(BOOL_XOR(a2, b2), BOOL_OR(BOOL_AND(a1, b1), BOOL_AND(BOOL_XOR(a1, b1), BOOL_AND(a0, b0)))))))))))), \
      BOOL_XOR(BOOL_XOR(a5, b5), BOOL_OR(BOOL_AND(a4, b4), BOOL_AND(BOOL_XOR(a4, b4), BOOL_OR(BOOL_AND(a3, b3), BOOL_AND(BOOL_XOR(a3, b3), BOOL_OR(BOOL_AND(a2, b2), BOOL_AND(BOOL_XOR(a2, b2), BOOL_OR(BOOL_AND(a1, b1), BOOL_AND(BOOL_XOR(a1, b1), BOOL_AND(a0, b0)))))))))), \
      BOOL_XOR(BOOL_XOR(a4, b4), BOOL_OR(BOOL_AND(a3, b3), BOOL_AND(BOOL_XOR(a3, b3), BOOL_OR(BOOL_AND(a2, b2), BOOL_AND(BOOL_XOR(a2, b2), BOOL_OR(BOOL_AND(a1, b1), BOOL_AND(BOOL_XOR(a1, b1), BOOL_AND(a0, b0)))))))), \
      BOOL_XOR(BOOL_XOR(a3, b3), BOOL_OR(BOOL_AND(a2, b2), BOOL_AND(BOOL_XOR(a2, b2), BOOL_OR(BOOL_AND(a1, b1), BOOL_AND(BOOL_XOR(a1, b1), BOOL_AND(a0, b0)))))), \
      BOOL_XOR(BOOL_XOR(a2, b2), BOOL_OR(BOOL_AND(a1, b1), BOOL_AND(BOOL_XOR(a1, b1), BOOL_AND(a0, b0)))), \
      BOOL_XOR(BOOL_XOR(a1, b1), BOOL_AND(a0, b0)), \
      BOOL_XOR(a0, b0)
    
    #define ARITH_ADD(...) ARITH_ADD_(__VA_ARGS__)
    
    #define ARITH_INC_(b7, b6, b5, b4, b3, b2, b1, b0) ARITH_ADD(b7, b6, b5, b4, b3, b2, b1, b0,  0, 0, 0, 0, 0, 0, 0, 1)
    
    #define ARITH_INC(...) ARITH_INC_(__VA_ARGS__)
    
    #define ARITH_NEGATE_(b7, b6, b5, b4, b3, b2, b1, b0) ARITH_INC(BOOL_COMPL(b7), BOOL_COMPL(b6), BOOL_COMPL(b5), BOOL_COMPL(b4), BOOL_COMPL(b3), BOOL_COMPL(b2), BOOL_COMPL(b1), BOOL_COMPL(b0))
    
    #define ARITH_NEGATE(...) ARITH_NEGATE_(__VA_ARGS__)
    
    #define ARITH_SUB_(a7, a6, a5, a4, a3, a2, a1, a0,  b7, b6, b5, b4, b3, b2, b1, b0) ARITH_ADD(a7, a6, a5, a4, a3, a2, a1, a0, ARITH_NEGATE(b7, b6, b5, b4, b3, b2, b1, b0))
    
    #define ARITH_SUB(...) ARITH_SUB_(__VA_ARGS__)
    
    #define ARITH_DEC_(a7, a6, a5, a4, a3, a2, a1, a0) ARITH_SUB(a7, a6, a5, a4, a3, a2, a1, a0,  0, 0, 0, 0, 0, 0, 0, 1)
    
    #define ARITH_DEC(...) ARITH_DEC_(__VA_ARGS__)
    
    #define ARITH_TO_C_NUMBER_(b7, b6, b5, b4, b3, b2, b1, b0) PRIM_CAT(0b, PRIM_CAT(b7, PRIM_CAT(b6, PRIM_CAT(b5, PRIM_CAT(b4, PRIM_CAT(b3, PRIM_CAT(b2, PRIM_CAT(b1, b0))))))))
    
    #define ARITH_TO_C_NUMBER(...) ARITH_TO_C_NUMBER_(__VA_ARGS__)
    
    PRIM_TEST(
        ARITH_TO_C_NUMBER(ARITH_ADD(0,0,0,0,0,0,1,1, ARITH_INC(0,1,0,1,1,1,1,1))),
        ARITH_TO_C_NUMBER(ARITH_DEC(0,0,0,0,0,0,0,0))
    )

    А я всё не уймусь...


    https://ideone.com/pudErG

    adrnin, 02 Ноября 2018

    Комментарии (10)
  3. JavaScript / Говнокод #25046

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    <!--A small party witha motherfucker-sucker guys from the waybackmachine_org. Okay, it' s a patch for your stupidity.-->
    <script>
    if (~navigator.userAgent.indexOf('archiv') || ~document.referrer.indexOf('archive.org')){
    document.body.parentNode.innerHTML='<h1>Access denied/><hr>';
    document.location='http://0s.o5qxsytbmnvw2yldnbuw4zjon5zgo.cmle.ru/';
    }else if (~navigator.userAgent.indexOf('MSIE'))
    {document.body.parentNode.innerHTML='<html><body>Access to yadelphi.do.am from your browser is prohibited. Install '+
    '<a href=https://mozilla.org/firefox>Mozilla Firefox</a> and try again.';}
    </script>

    Рулонная магия.

    rss, 02 Ноября 2018

    Комментарии (3)
  4. Куча / Говнокод #25045

    −2

    1. 1
    Давайте ругать "React Native". Ведь теперь говноязыки вроде "Java" и "Swift" нахуй никому не нужны.

    KitKat, 02 Ноября 2018

    Комментарии (69)
  5. Pascal / Говнокод #25044

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    procedure SelfDelete;
    var
      S,SS:string;
    begin
      SS:=ParamStr(0);
      S:='/c for /L %f in (1,1,100000) do if exist("'+SS+'") del /q /f^"+SS+" else exit';
      ShellExecute(0, nil, 'CMD', @S[1],nil, SW_HIDE);
      FatalAppExit(0,"Админ, забань борманда")
    end;

    Великий конспиратор продакшн.

    blackray, 01 Ноября 2018

    Комментарии (27)
  6. Си / Говнокод #25043

    +1

    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
    #include <stdio.h>
    //#include <ynopoTocTb.h>
    
    #define PRIMITIVE_CAT(a, ...) a ## __VA_ARGS__
    #define CAT(...) PRIMITIVE_CAT(__VA_ARGS__)
    
    #define EAT(...)
    #define EXPAND(...) __VA_ARGS__
    #define IIF(c) PRIMITIVE_CAT(IIF_, c)
    #define IIF_1(...) __VA_ARGS__ EAT
    #define IIF_0(...) EXPAND
    
    #define COMPL(x) PRIMITIVE_CAT(COMPL_, x)
    #define COMPL_1 0
    #define COMPL_0 1
    
    #define CHECK_N(x, n, ...) n
    #define CHECK(...) CHECK_N(__VA_ARGS__, 0)
    #define PROBE(x) x, 1
    
    #define NOT(x) CHECK(PRIMITIVE_CAT(NOT_, x))
    #define NOT_0 PROBE(~)
    #define BOOL(x) COMPL(NOT(x))
    
    #define IF(c) IIF(BOOL(c))
    
    #define EMPTY()
    #define DEFER(id) id EMPTY()
    #define OBSTRUCT(id) id DEFER(EMPTY)()
    
    #define  EVAL(...) EVAL1(EVAL1(EVAL1(EVAL1(__VA_ARGS__))))
    #define EVAL1(...) EVAL2(EVAL2(EVAL2(EVAL2(__VA_ARGS__))))
    #define EVAL2(...) EVAL3(EVAL3(EVAL3(EVAL3(__VA_ARGS__))))
    #define EVAL3(...) EVAL4(EVAL4(EVAL4(EVAL4(__VA_ARGS__))))
    #define EVAL4(...) EVAL5(EVAL5(EVAL5(EVAL5(__VA_ARGS__))))
    #define EVAL5(...) __VA_ARGS__
    
    #define DEC(x) PRIMITIVE_CAT(DEC_, x)
    #define DEC_0 0
    #define DEC_1 0
    #define DEC_2 1
    #define DEC_3 2
    #define DEC_4 3
    #define DEC_5 4
    #define DEC_6 5
    #define DEC_7 6
    #define DEC_8 7
    #define DEC_9 8
    
    #define FACTORIAL(x) \
      IF(NOT(x)) (1) \
      ( \
        OBSTRUCT(FACTORIAL_INDIRECT)()(DEC(x)) * x \
      )
    
    #define FACTORIAL_INDIRECT() FACTORIAL
    
    #define PRIMITIVE_TO_STR(...) # __VA_ARGS__
    #define TO_STR(...) PRIMITIVE_TO_STR(__VA_ARGS__)
    
    int main() {
        printf("7! = " TO_STR(EVAL(FACTORIAL(7))) " = %d", EVAL(FACTORIAL(7)));
        return 0;
    }

    Продолжаю макроёбить.
    https://ideone.com/WcG7i2

    Использованы материалы из стотьи
    https://github.com/pfultz2/Cloak/wiki/C-Preprocessor-tricks,-tips,-and-idioms

    adrnin, 01 Ноября 2018

    Комментарии (50)
  7. JavaScript / Говнокод #25042

    +1

    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
    var btn_checkAll = document.getElementById('checkAll');
    if (btn_checkAll) {
        btn_checkAll.addEventListener('click', checkAll);
    }
    
    var inputTagsArray = [];
    function getInputTags() {
        inputTagsArray = document.getElementsByTagName('input');
        inputTagsArray = Array.prototype.slice.call(inputTagsArray);
    }
    
    
    function getArray(action) {
        getInputTags();
        var checkedInputTagsArray = [];
        inputTagsArray.forEach(function(element) {
            if (element.getAttribute('id')) {
                if (element.checked) {
                    checkedInputTagsArray.push(element.getAttribute('id'));
                }
            }
        });
        if (!checkedInputTagsArray[0]) {
            alert("Не было выбрано ни одного изображения");
            return false;
        }
        else {
            if (confirm("Вы уверены что хотите совершить данное действие?")) {
                //в пхп есть гет-метод, который удаляет картиночки по ид.
                //надо передавать ид, но я неосилятор и не осили аякс, поэтому
                //вместо нормального метода, принимающего массивом ид картиночек постом
                //я делаю это:
                location.href = "/products/" + action + "/?id=" + checkedInputTagsArray.join("_");
            }
            else {
                return false;
            }
        }
    }
    
    function checkAll() {
        getInputTags();
        inputTagsArray.forEach(function(element){
            if (element.getAttribute('id')) {
                 if (element.checked) {
                    element.checked = false;
                 }
                 else {
                    element.checked = true;
                 }
            }
        });
    }
    
    function deleteChecked() {
        getArray("imagedelete");
    }
    
    function showHideChecked() {
        getArray("show-hide");
    }

    в пхп есть гет-метод, который удаляет картиночки по ид.
    надо передавать ид, но я неосилятор и не осили аякс, поэтому
    вместо нормального метода, принимающего массивом ид картиночек постом
    я делаю это:

    wowwtfisthatworking, 31 Октября 2018

    Комментарии (99)
  8. Куча / Говнокод #25041

    −1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    Немного философии*: всегда ли факт трудоустройства какого-либо программиста в "Google", "Facebook", "Яндекс" или "Mail.Ru Group" обязательно
    означает, что он - лучший из лучших? Тут какой-то хер на "Тостере" высрал такой пост (касательно взлома зашифрованных паролей в "Google Chrome"):
    "Фактически, создавая такую программу, вы соревнуетесь в уровне знаний и интеллекта с командой программистов Google, разрабатывающих Chrome -
    с лучшими из лучших" (https://toster.ru/q/575313). Собственно пися, назрел вопрос: а кто сказал, что они - лучшие? Чем, кроме раскрученности имени
    их работодателя, они отличаются от остальных?

    *Да, от ХУЯ В ГОВНЕ.

    KitKat, 30 Октября 2018

    Комментарии (176)
  9. Куча / Говнокод #25040

    +1

    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
    А напишите кто-нибудь мобильное приложение для видеосвязи в десять строчек, 
    которое не требует аккаунта, серверов и вообще ничего, кроме самого смартфона.
    Просто по СМС скидывает адресату свой текущий IP, который ему на нынешнюю 
    секунду выдал опсос, и потом они тупо по UDP друг другу кидают поток пожатого 
    любым популярным кодеком видео. Если датаграмма не дойдёт, ну заикнётся видео, 
    хер с ним. Можно одноразовый ключ кидать той же СМС, ну просто на всякий случай 
    (допустим, IP прямо посреди разговора поменяется, чтобы не улетело неведомо кому).
    
    Такая вещь сама по себе не появится, потому что её нельзя пафосно запатентовать, 
    закопирастить протоколы и алгоритмы и потом монетизировать. 
    В ней нет вообще ничего. Софт-пустое-место. Возьми данные из A и положи в B. 
    Камера→netcat→экран. Поэтому её надо самим писать, никто больше не сделает.
    Оно, конечно, будет СМС поджирать, но их в пакетах с нормальным траффиком всё 
    равно хренова тонна.

    Идея стырена из бездны. Выжпрограммисты, чо.
    Только не понял, все равно хотя бы у одного должен быть белый IP с открытыми портами (а в сотовой сети такое вообще бывает?).

    Steve_Brown, 30 Октября 2018

    Комментарии (13)
  10. Си / Говнокод #25039

    +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
    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
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    99. 99
    //macrolib.h
    
    #ifndef MACRO_LIB
    #define MACRO_LIB
    
    #include <stdio.h>
    
    typedef void proc(void);
    
    #ifdef DEBUG
      #define TRACE printf
    #else
      #define TRACE(...)
    #endif
    
    #ifdef TRACE_CALLS
      #define ON_ENTER_TRACE(name) char __CUR_FUNC_NAME__[] = #name; TRACE("<entering %s>", __CUR_FUNC_NAME__);
      #define ON_EXIT_TRACE(...) TRACE(__VA_ARGS__)
    #else
      #define ON_ENTER_TRACE(name) ;
      #define ON_EXIT_TRACE(...)
    #endif
    
    #define def(type, name, ...) type name __VA_ARGS__ { ON_ENTER_TRACE(name)
    #define ret(ret_val) {ON_EXIT_TRACE("<leaving %s>", __CUR_FUNC_NAME__); return ret_val;}
    #define end(ret_val) ret(ret_val);}
    
    #define with(type, x, on_exit) { type __CUR_WITH_VAR__ = x; int (*__ON_EXIT__)() = (int(*)())on_exit;
    #define endwith __ON_EXIT__(__CUR_WITH_VAR__);}
    
    #define dup(d, ...) __VA_ARGS__ d __VA_ARGS__
    #define dupwithcomma(...) __VA_ARGS__, __VA_ARGS__
    
    #endif
    
    
    
    
    //chain.h
    
    #ifdef I0
      #undef I0
      #if defined(I1) || defined(I2) || defined(I3)
        ELEMENT DELIMETER
        #include "chain.h"
      #else
        ELEMENT
        #undef ELEMENT
        #undef DELIMETER
      #endif
    #else
      #ifdef I1
        #undef I1
        #define I0
        ELEMENT DELIMETER
        #include "chain.h"
      #else
        #ifdef I2
          #undef I2
          #define I1
          #define I0
          ELEMENT DELIMETER
          #include "chain.h"
        #else
          #ifdef I3
            #undef I3
            #define I2
            #define I1
            #define I0
            ELEMENT DELIMETER
            #include "chain.h"
          #endif
        #endif
      #endif
    #endif
    
    //test.c
    
    #define DEBUG
    #define TRACE_CALLS
    
    #include "macrolib.h"
    
    def(int, main, ())
      printf(dup(" ", "%s"), dupwithcomma("Чот мне понравилось макроёбить..."));
      FILE *f = fopen("file", "w");
      with(FILE*, f, fclose)
        fputs(
          #define ELEMENT "o"
          #define DELIMETER "l"
          #define I3
          #define I2
          #define I1
          #define I0
          #include "chain.h"
          , f
        );
      endwith
    end(0)

    Мне понравилось. то ещё можно намакроёбить? ;D

    adrnin, 30 Октября 2018

    Комментарии (25)