• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Полиглот-рантаймофоб

Пожалуйста, обратите внимание, что пользователь заблокирован
С чего бы им не работать
С того, что они в рантайме, даже если это простая прослойка над malloc'ом, ее придется определять в своем коде, чтобы она работала, я об этом написал.

что насчет рантайм дедукций и понижающих приведений? ты пробовал?
Нет, не пробовал, попробуй и напиши здесь. Я, если честно, очень сомневаюсь, что в чистом винапе это может быть кому-то полезно.

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

Конечно на цэ все это поюзабельней выглядит, однако это пример на скорую руку)
Ну в Расте мне это и не нравится, что для использования винапе нужно церемонии проводить (оборачивать все в ансейф и тд). Я прекрасно понимаю, что это сделано для благой цели, но мне от этого понимания желания так делать все равно не появляется. Но в целом ничего против не имею)
 
Возможно без рантайма или нет это так себе вопрос, важно четко понимать пределы возможного. И основной вопрос а можно ли ооп и в каком объеме его можно.

Если касаться всех аспектов и подводных камней, то по каждому языку нужно писать отдельную статью, это обзорная статья по нескольким языкам, которая и так вышла слишком большой.
Ага только вышла не статья а блохастый поскакуй на кривой жопе, который дает понять что процедурщина вокруг меседж бокса возможна. Эх ты, интересную тему просрал.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Ага только вышла не статья а блохастый поскакуй на кривой жопе, который дает понять что процедурщина вокруг меседж бокса возможна. Эх ты, интересную тему просрал.
Так возьми и сделай, какой вопрос то? Я просрал, ты не просрешь. Поэтому тебя тут и не любят особо, только ходишь и духоту наводишь везде. Пиши статьи уже.

Возможно без рантайма или нет это так себе вопрос, важно четко понимать пределы возможного. И основной вопрос а можно ли ооп и в каком объеме его можно.
Те же Плюсы - это огромный язык, я перечислил те ограничения, которые знал, дальше не узнаешь, пока не попробуешь. Разжевать каждый аспект для тебя - не является задачей каждой конкретной статьи. Пробуй, если что-то не получается, и ты не понимаешь, как сделать, или почему не работает, то приходи и спрашивай, если я могу помочь, я тебе помогу. Как и каждому другому.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Статья по сабжу - https://nullprogram.com/blog/2023/02/15/
В статье рассматривается создание "свободных от CRT" бинарников под винду-мастдаечку, не использующих CRT для инициализации и работы.
Там чуть расписано про точку входа программы, пробники стека, встроенные функции и компиляцию с тулчейнами GNU и MSVC.
Автор приводит инструкции и примеры кода по теме и пару советов, которые помогут писать без CRT.

У него там в блоге есть еще статьи по сабжу - вот к примеру на эту тему - When not using the C standard library, how does one deal with formatted output?
Чувак, автор блога, писал кодес на Цэ - еще до рождения половины населения xss.pro - думаю он отчасти постиг дзен, пройдя сей не простой путь.
 
Последнее редактирование:
Статья по сабжу - https://nullprogram.com/blog/2023/02/15/
В статье рассматривается создание "свободных от CRT" бинарников под винду-мастдаечку, не использующих CRT для инициализации и работы.
Там чуть расписано про точку входа программы, пробники стека, встроенные функции и компиляцию с тулчейнами GNU и MSVC.
Автор приводит инструкции и примеры кода по теме и пару советов, которые помогут писать без CRT.

У него там в блоге есть еще статьи по сабжу - вот к примеру на эту тему - When not using the C standard library, how does one deal with formatted output?
Чувак, автор блога, писал кодес на Цэ - еще до рождения половины населения xss.pro - думаю он отчасти постиг дзен, пройдя сей не простой путь.
Сишечка. А ты же вроде судя по постам, разраб и достаточно серьезный, а значит должен понимать почему пляски не от печки а от интерфейсов а значит спрашивать их у фабрик, ну и цепочки ответственности, проксы, декораторы, адаптеры, политики. Полиморфизм на ц это такое себе занятие. Я все это на плюсах порешал и уже достаточно давно(лет эдак 6 назад), если что - статей писать про это не планирую.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Полиморфизм на ц это такое себе занятие
писать на Цэ или плюсах, не доставляет мне радости.
Выбираю там где это возможно не иметь ни какаих дел ни с Цэ ни тем более с плюсами.
Люблю c#, но на Цэ пишу всякие штуки которые могут в inline execute-assembly шарпов
 
писать на Цэ или плюсах, не доставляет мне радости.
Выбираю там где это возможно не иметь ни какаих дел ни с Цэ ни тем более с плюсами.
Люблю c#, но на Цэ пишу всякие штуки которые могут в inline execute-assembly шарпов
Я пока только мечтаю выучить шарп. Планирую сочетать его с плюсами.
 
Процесс просто с нехера выходит (в те древние времена это приводило к вызову abort, сейчас не знаю, вроде это undefined behaviour, то есть зависит от конкретного компилятора), если ставишь бряк на abort, то из-за разматывания стека вообще нихера не понятно, откуда поток пришел в abort. А если иерархия классов сложная (как любят адепты плюсов писать), то вот далеко не очевидно, где какой деструктор вдруг что-то выкинул. В итоге я, наверное, часов пять просидел над этим, потом вломил пиздюлей джунам.
Хз знал ли ты или знаешь сейчас, но это происходит потому что все деструкторы начиная с c++ 11 помечены как noexcept, а все noexcept функции когда вызывают исключение, то происходит abort:
C++:
struct A
{
    ~A() // тоже самое что и ~A() noexcept
    {
        throw 1; // из-за этого вызывается abord, т.к noexcept указывает, что в деструктуре не должны быть исключения
    }
};

int main() {
    try {
        A a;
    }
    catch (...) {
     // Тут никогда не словим
    }

    return 0;
}
На самом деле можно сделать так;
C++:
struct A
{
    ~A() noexcept(false)
    {
        throw 1; // abort не вызывается
    }
};

int main()
{
    try {
        A a;
    }
    catch (...) {
      // Теперь тут мы можем ловить исключения даже из деструктора
    }

    return 0;
}
Ну и сделали так, как ты писал, что при исключении вызываются деструкторы всех локальных объектов, а при втором выбросе исключения из деструктора уже сушим весла, и никакие try catch не спасают. Да и в конструктор исключения не хорошо выбрасывать, т.к при исключении к конструктуре потом не вызывается деструктор этого объекта и если мы на куче уже навыделяли память, то получаем утечку, ну, это конечо если не используются смарт поинтеры, а их нужно использовать)
 
Последнее редактирование:
потому что все деструкторы начиная с c++ 11 помечены как noexcept,
Кстати это легко можно проверить оператором noexcept, которое возвращает bool, вот так:
C++:
#include <iostream>

struct A
{
    ~A()
    {
    }
};

int main()
{
    A a;
    std::cout << noexcept(a.~A());   // 1

    return 0;
}
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх