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

    0

    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
    #include <stdlib.h>
    
    #define printf() print()
    
    int main(void) 
    {
        int a = 0;
    
        a = a++ + ++a;
    
        print("I'm using macro that redefine printf() function (%d).", a);
    
        return 0;
    }

    Ыыыыыыыы
    суть говнокода же чтоб он собрал максимум красных цифр?
    это не мой код честно!!!

    Запостил: Ksyrx, 31 Июля 2019

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

    • warning: implicit declaration of function ‘print’ [-Wimplicit-function-declaration]
      undefined reference to `print'
      collect2: error: ld returned 1 exit status
      Ответить
      • Починил: http://ideone.com/xclcOk
        Преамбула должна быть такой:
        #define printf print
        #include <stdio.h>

        Вообще не понимаю, как оно слинковалось. gcc использует инлайн вместо внешней функции?
        Ответить
        • Да скорее всего printf там макросом объявлено и затирает твоё объявление, либо ifdef undef.
          Ответить
          • В «MinGW» printf объявлена макросом, который вызывает внешнюю функцию __mingw_vfprintf:
            __mingw_ovr
            __attribute__((__format__ (gnu_printf, 1, 2))) __MINGW_ATTRIB_NONNULL(1)
            int printf (const char *__format, ...)
            {
              int __retval;
              __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
              __retval = __mingw_vfprintf( stdout, __format, __local_argv );
              __builtin_va_end( __local_argv );
              return __retval;
            }

            Если я впереди поставлю #define printf print, то макрос объявит функцию print, которая будет вызывать всё ту же внешнюю __mingw_vfprintf.

            Поскольку в «Ideone» работает так же, значит, и в «Линуксе» макрос, который вызывает какую-нибудь __stdio_common_vfprintf или __gnu_vfprintf или типа того.
            Ответить
        • Потому что в курятнике сидишь блять. Открой инклуды посмотри что за магия, мингв даже не смотри на эту парашу
          Ответить
      • Варнинг хуярнинг, пользуешься навороченной хуйней какой то. Коллектор блядь. Все собирается заебись да варнинг но в Си так можно и вообще иди нахуй посмеялся бы шоль
        Ответить
        • Ты инсультник?
          Ответить
          • ?????? поясни пж
            Ответить
          • го в лс куда нибудь пообщаемся
            Ответить
            • нахуа?
              Ответить
              • ну просто давай поговорим
                го в дискорд или tlg ?
                Ответить
                • почему именно со мной?
                  Ответить
                  • ну просто я хочу предложить именно тебе
                    почему би и нит ??
                    Ответить
                    • Я тебя огорчу, он натурал.
                      Ответить
                      • да иди ты нахуй со своим натурализмом
                        просто поговорить хочется и со, чо тебе тут нннада ??
                        Ответить
                        • Я водяной, я водяной,
                          Поговорил бы кто со мной?

                          Тебе грустно и одиноко? Позвони сюда, сладенький: ♥♥♥2005732♥♥♥
                          Стоимость звонка 100500 руб./сек.
                          Ответить
                          • шо стебешься ты наверное знаешь что это такое и вообще чо те надо блен
                            Ответить
                  • слуш, ты админ? можешь удалить мои посты там где нет кода, ну там php и другие, я буду в кучу писать ес шо
                    Ответить
        • >> error: ld returned 1 exit status
          > варнинг [...] Все собирается заебись

          Как же оно у тебя собирается, если в сях нету функции print.

          > Си так можно
          Как? Вызывать несуществующие функции?

          > посмеялся бы шоль
          Надеюсь, что у тебя просто чувство йумора такое. Но помоему нихрена смешного нет в том, чтобы писать неконпелируемую хуиту.

          Вот лучше посмотри на дизасм этого говна https://godbolt.org/z/sznhEa оно конпелируется и даже отрабатывает успешно, хотя глядя на дизасм функции type в это сложно поверить. ESI же младшая часть RSI, как оно продолжает работать, если его затёрли?
          Ответить
          • > оно конпелируется

            вот с этого момента можешь не продолжать и успПАКОИТСЯ!!!!
            Ответить
            • RSI ЗАТЕРСЯ БЛЯДЬ УКАЗАТЕЛЬ ИНСТРУКЦИЙ ВМ А ОНО УСПЕШНО ОТРАБАТЫВАЕТ!!!!!1111почему?
              Ответить
              • ну потому што ты чета недогоняешь наверное
                НЕТ ????
                и вообще причем здесь блядь регистры ?? НУ ВОТ СКАЖЫ !!!!
                Ответить
                • Потому и спрашиваю, объясни мне пожалуйста, что происходит.
                  Ответить
                  • ешкин кот ти шо думаешь мне хочеца тратить на эту бесполезную хуйню которую ты с чего то взял, свое время ?? почему почему блеть, ну вот потому что работает
                    окей, попробуем рассмотреть твою претензию...
                    Ответить
                  • аааа ебаный в рот, эээ иди ты в сраку блеть
                    сам думай охуел, я думал это говно которое я кинул ))))
                    Ответить
              • Гвоздями прибей
                Ответить
          • >Как? Вызывать несуществующие функции?
            в си так можно, если не линковать объектный файл
            Ответить
            • Если ты ничего не ликовал, то ты ничего и не вызывал.
              Ответить
              • ладно, падъебнул

                а можно написать линкеру скрипт такой волшебный чтобы он заликовал как-то функцию которую никто не экспортирует?
                Ответить
                • Можно. Просто объявишь символ прямо в линкер скрипте.
                  Ответить
    • Переведи на делпхи
      Ответить
      • Это непереводимо:
        1. В «Делпхи» нет мокросов. Именно поэтому я за «Делпхи».
        2. До линковки дело даже не дойдёт, если есть необъявленные функции. Можно, конечно, объявить procedure print; external; но всё равно встроенный линкер не соберёт экзешник.
        Ответить
        • Нахуя там экстернал принт, если можно вызвать бАнальную связку Write и Format?
          Ответить
          • Можно. Но тут же просили перевести оригинальный код. А в оригинальном коде всё плохо, он вообще не обязан работать.

            Как перевести неработающий или условно работающий код?
            Ответить
        • Можно на FPC:
          {$MACRO ON}
          {$DEFINE writeln:=print;}
          Ответить
        • Можно же просто подсунуть println.obj и там уже объебать
          Ответить
    • На какой тачке ездит Герман гремпф?
      Ответить
    • слушайте, короче я решил запустить этот код у себя, у меня нихуя не собралось, так что код не работает, расходимся и пишем что я криворукий даин давайте
      Ответить
    • зачем мне эта информация ?
      Ответить

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