C ++ функции могут вызываться из C, если вы объявите их как extern "C"
. Это связано с искажением имени
Интерпретатор Python может быть расширен функциями C. Внимательно прочитайте главу Расширение и встраивание Python Интерпретатор .
Будьте осторожны с исключениями C ++. Вы не хотите, чтобы они пересекали код интерпретатора Python. Поэтому любая функция extern "C"
C ++, вызываемая из Python, должна обрабатывать и перехватывать исключения , вызванные внутренними процедурами.
Наконец, будьте осторожны с управлением памятью и сборкой мусора. Старая статья П. Уилсона о Унифицированные методы сбора мусора актуальна, по крайней мере, для терминологии и понимания. Или прочитайте G C справочник . Python использует схему подсчета ссылок и обрабатывает специально слабые ссылки . Будьте осторожны с циклическими ссылками .
Разумеется, помните о GIL в Python. Грубо говоря, вы не можете иметь несколько потоков, выполняющих Python вещи без предосторожностей.
Сериализация данных, связанных с устройством, также может быть проблемой, но она, вероятно, вам не нужна.
Самое главное, хорошо документируйте ваш код .
Могут помочь такие инструменты, как doxygen (возможно, с LaTeX или DocBook ).
Используйте, конечно, достаточно хорошую систему контроля версий . Я рекомендую git. Также хороший инструмент для автоматизации сборки .
Я предлагаю опубликовать sh ваш код C ++ как с открытым исходным кодом , например, на github или gitlab . Затем вы можете получить полезные обзоры кодов и отзывы.
Если ваша аппаратная и программная система критически важна для безопасности , рассмотрите stati c программный анализ техники, например с Frama- C или Clang stati c анализатор или с вашим собственным G CC плагином . Через несколько месяцев (конец 2020 года) вы можете попробовать Bismon (см. Также этот черновик отчет).
Я определенно пристрастен, но я рекомендую попробовать некоторые Linux дистрибутив (например, Ubuntu или Debian ) в качестве платформы кросс-разработки. Имейте в виду, что многие устройства (включая RaspBerryPi ) работают под управлением встроенной Linux системы , поэтому усилия по обучению имеют смысл. Затем прочитайте Дополнительно Linux Программирование