Регулярные выражения в макросе препроцессора C - PullRequest
7 голосов
/ 08 октября 2011

Я хотел бы знать, есть ли какое-либо расширение регулярных выражений в препроцессоре компилятора (GCC).В основном более гибкие макросы генерации кода.

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

Ответы [ 4 ]

5 голосов
/ 08 октября 2011

Препроцессор C не может этого сделать.

Возможно, вы захотите использовать шаблонный процессор (например, Усы , но есть много других), который генерирует то, что вам нужно, прежде чем передать его.компилятору.

1 голос
/ 08 октября 2011

Кроме того, если вы планируете больший проект и знаете, что эта функция будет полезна, вы можете написать свой собственный препроцессор, который вы сможете запускать автоматически из какой-то системы сборки.Хорошим примером такого решения будет moc , который расширяет C ++ для целей инфраструктуры Qt.Пурист, конечно, может не согласиться.

0 голосов
/ 19 июня 2012

Возможно, вы захотите взглянуть на re2c.org.Это отдельный препроцессор C для генерации кода C для соответствия регулярным выражениям.Я нашел это и ваш вопрос, когда искал что-то похожее.

0 голосов
/ 10 ноября 2011

Имеется это https://github.com/graph/qc qc = Quick C, оно позволяет вам делать это в файлах исходного кода, которые заканчиваются на qc.h

$replace asdf_(\d+) => asdf_ :) $1 blabla

// and now in your code anything that matches the above regular expression
asdf_123
// will become asdf_ :) 123 blabla

И выводит .cpp &Это предварительно обработано.Это сделано, чтобы избежать необходимости поддерживать заголовочные файлы.И некоторые другие вещи, не делающие его обратно совместимым с c ++, но он выводит код на c ++, так что вы можете делать все, что захотите, в конце дня. C ++

Edit: я сделал это и уклон в сторонудс.

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