Ниже приведено регулярное выражение, которое я написал для соответствия многострочным макросам препроцессора в коде C / C ++. Я ни в коем случае не гуру регулярных выражений, поэтому буду рад любым советам о том, как я могу сделать это лучше.
Вот регулярное выражение:
\s*#define(.*\\\n)+[\S]+(?!\\)
Это должно соответствовать всем этим:
#define foo(x) if(x) \
doSomething(x)
Но только некоторые из них (не должны соответствовать следующей строке кода:
#define foo(x) if(x) \
doSomething(x)
normalCode();
А также не должен совпадать с однострочными макросами препроцессора.
Я почти уверен, что приведенное выше регулярное выражение работает, но, как я уже сказал, возможно, есть лучший способ сделать это, и я предполагаю, что есть способы его сломать Кто-нибудь может предложить что-нибудь?