1

我有一个代码片段 int tc 像

val =  (val1 << 8) | (val >> 8 );
val =  (val2 << 16) | (val >> 8 );
val =  (val3 << 32) | (val >> 8 );
val =  (val << 8);

如果我 grep as 我会得到输出 grep -nhE "(<<.*|).*(>>)" t.c

1:val =  (val1 << 8) | (val >> 8 );
2:val =  (val2 << 16) | (val >> 8 );
3:val =  (val3 << 32) | (val >> 8 );

但是如果用 cppcheck 搜索 ./cppcheck --rule="(<<.*|).*(>>)" t.c我会得到输出

[../test/t.c:1]: (style) found ' val = ( val1 << 8 ) | ( val >> 8 ) ; val = ( val2 << 16 ) | ( val >> 8 ) ; val = ( val3 << 32 ) | ( val >>'

即显示从第一次匹配开始的整个匹配行。我想要 grep 命令中的结果。

请帮忙

4

1 回答 1

0

尝试以下命令(转义|):

cppcheck --rule="<<.*?\|.*?>>" t.c

输出与 grep 的输出不完全相同。

于 2013-07-10T10:43:25.947 回答