Каков наилучший способ изолировать «грязный» код C от чистого кода во время компиляции? - PullRequest
2 голосов
/ 16 июля 2009

У меня есть хорошая чистая, совместимая со стандартами кодовая база, которую я могу скомпилировать с помощью GCC " -ansi -pedantic-errors -Wextra " и т. Д.

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

Каков наилучший способ изолировать этот код от моего, чтобы я все еще мог строго компилировать свой код, но мог бы позволить снисходительность с помощью стороннего кода?

Ответы [ 3 ]

4 голосов
/ 16 июля 2009

Хорошего пути нет.

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

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

Вы можете ограничить использование библиотеки только несколькими вашими модулями. Затем скомпилируйте эти модули с расслабленными параметрами. Как много работы это зависит от того, как написано ваше приложение. Это может быть лучшим способом.

3 голосов
/ 16 июля 2009

Структурируйте свою среду сборки так, чтобы у вас была зависимость от вашего хорошего кода до плохого кода библиотеки. Кроме того, убедитесь, что зависимость разрешена путем построения кода библиотеки в отдельной компиляции с различными параметрами. Это позволит вам построить два отдельно, но выразить зависимость, которая позволит построить весь проект одной командой. Я абстрактен, так как я не знаю твоей среды сборки. Предполагая, что вы используете make-файлы, вы можете немного поиграть с целями и достичь этого.

0 голосов
/ 16 июля 2009

Статически скомпилируйте библиотеку перед вашим проектом. Заставьте ваш проект ссылаться на заголовки библиотеки и ссылаться на него.

Если заголовки библиотеки действительно ужасны, просто напишите несколько простых оберток вокруг них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...