Проблема с компиляцией образца pcm.c проекта ALSA в операционной системе Raspberry Pi Zero

Практически никогда не стоит возиться с регулярными выражениями в синтаксисе любого языка. Он очень хрупок и может закончиться хаосом по малейшей причине, такой как закомментированная строка #ifdef. Исправление глючного парсера другим потенциально глючным парсером — это… как минимум странно.

Если вы поняли проблему, вы можете продолжить чтение.

В некоторых случаях это может помочь удалить весь блок #ifdef(, кстати, вы уверены, что хотите рассматривать его как не определенный?):

sed '/ enum /,/}/!b
  /#ifdef/!b
  :loop
  N
  /#endif/!bloop
  d' file.h

Пояснение:

  • / enum /,/}/!bоставить все строки вне диапазонаenum-}-нетронутыми
  • /#ifdef/!bтакже оставьте все внутри нетронутым, пока#ifdef
  • :loopда, как только мы встретили #ifdef, нам нужно зациклиться
  • NТеперь начинаем дописывать строки...
  • /#endif/!bloopпока не нашли#endif
  • Затем dудалите все, что мы собрали между #ifdefи #endifмы собрали
0
13.10.2021, 05:20
1 ответ

Вы пытаетесь скомпилировать это как программу на C++ ("ISO C++ запрещает..." ). Таким образом, вы получаете всевозможные предупреждения, потому что включены заголовки C, а не C++.

Либо переименуйте main.cppв main.c, чтобы она скомпилировалась как программа на C, либо используйте правильный способ C++ для включения заголовков C -в extern "C", а затем используйте g++и сделайте Убедитесь, что ваш собственный код соответствует стандарту C++.

2
13.10.2021, 08:08

Теги

Похожие вопросы