Size: a a a

2021 July 11

D

Dmitriy in supapro.cxx
А как пользовательский макрос попадет внутрь скомпиленной функции?))
источник

D

Dmitriy in supapro.cxx
Точно!
Благодарю)
источник

D

Danya in supapro.cxx
А
источник

S

Shurick in supapro.cxx
макрос подменяет собой код, а компилится уже раскрытый код
источник

D

Dmitriy in supapro.cxx
Код уже скомпилен
источник

S

Shurick in supapro.cxx
не не
источник

S

Shurick in supapro.cxx
компиляция идет с созданием *.o файла
источник

S

Shurick in supapro.cxx
в нем нет макросов
источник

D

Dmitriy in supapro.cxx
Чукча не читатель?
источник

D

Dmitriy in supapro.cxx
Поставляется скомпиленная либа и хедер, доступность Foo()/Bar() в хедере зависит от макроса, задача - не заставлять реализовывать обе *Impl() и не требовать перекомпиляции всей библиотеки
источник

S

Shurick in supapro.cxx
в скопиленой либе уже скопилены макросы из хедера, соотвественно хедер уже менять нельзя иначе это приведет к недоступности либы
источник

D

Dmitriy in supapro.cxx
источник

D

Dmitriy in supapro.cxx
Макрос не раскрывается в коде либы)))
Выше ж пример был
#if FOO_MODE
void Foo();
#else
void Bar();
#endif
источник

S

Shurick in supapro.cxx
потомучто в либе оба метода, а заголовке выборочно
источник

S

Shurick in supapro.cxx
теоретически можно выключить макрос и сделать доступным все методы
источник

S

Shurick in supapro.cxx
тк либа уже скопилена и второй раз она компилится не будет
источник

D

Dmitriy in supapro.cxx
Теоретически RTFM, но это так не работает
источник

S

Shurick in supapro.cxx
возможно имея исходник либы многие вопросы решились
источник

D

Dmitriy in supapro.cxx
Хм, стало интереснее.
Дело в том, что FooImpl() и BarImpl() должны быть (по некоторым длинным причинам) extern "C", и заглушку inline просто так не сделаешь
источник

S

Shurick in supapro.cxx
проприетарщина иногда сама себе в ногу стреляет
источник