metaclass: (Default)
[personal profile] metaclass
Судя по тому, что я наблюдаю в либах на Си (например, libuv), магия из макросов весьма популярна, в том числе и для реализации разного рода структур данных вроде списков, хэшей (https://troydhanson.github.io/uthash/) и прочего такого.

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

Date: 2016-07-25 07:26 pm (UTC)
From: [personal profile] alll
Гм. В Си есть какое-то ограничение на длину макроса, которого нет в C++?

Date: 2016-07-25 08:09 pm (UTC)
From: [identity profile] psilogic.livejournal.com
в С++ есть шаблоны, конструкторы и pointer-to-member, которые покрывают over 95% случаев, когда в С нужен длинный макрос

конечно, все перечисленное, мягко говоря, не идеально, но... сравниваем не с идеалом, а с макросами

Date: 2016-07-25 09:06 pm (UTC)
From: [personal profile] alll
[Задумчиво перечитывает очередное сообщение компилятора об ошибке при инстанцировании шаблона] о, да! Дас ист фантастиш!

Но конкретно в случае уже написанного кем-то макроса (увы, мир не идеален, иногда приходится работать с унаследованным или 3rd party кодом) C++ и самая-правильная-среда-разработки мало чем могут помочь. :(

Date: 2016-07-25 09:22 pm (UTC)
From: [identity profile] psilogic.livejournal.com
Шаблоны ужасны, а шаблоны STL - вообще паноптикум. Но это все же лучше макросов - хотя бы можно отлаживаться.

В случае уже написанного - да, проблема. Одна из многих :)

В среде все равно удобнее, т.к. хотя бы не приходится искать определение каждого макроса, особенно, если он определен по-разному в зависимости от других макросов.

Но опять же - если 3rd party не сделала проект под эту среду - само создание проекта, скорее всего, займет слишком много времени.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 4th, 2025 06:29 pm
Powered by Dreamwidth Studios