用于发现不正确的预处理器指令的 Powershell 脚本

Powershell Script for spotting incorrect preprocessor directives

我需要检查项目文件中每个“#define”的值是否在括号内。 例如:

#define A (50)
#define B (60)
#define C 70

我想找出所有包含错误#define 格式的文件,以便手动更正它。

我想通过 运行 一个小的 powershell 脚本来自动执行此任务,但我坚持执行它。这是我到目前为止写的:

GetChildItem -Recurse | Select-String "#define" /*some additional code*/ -List | Select Path

任何解决方案将不胜感激。

类似于:

... |Select-String '^#define(?!\s+[\w]+\s+\([^\)]+\)\s*$)'

...应该做。

正则表达式模式分解为:

^                   # start of line
 #define            # followed by literal string "#define"
 (?!                # negative look-ahead for
    \s+             # 1 or more whitespace chars
    [\w]+           # 1 or more words characters
    \s+             # 1 or more whitespace chars
    \([^\)]+\)      # literal "(" followed by 1 or more non-"(", and finally a literal ")"
    \s*             # trailing whitespace
    $               # end of string
 )                  # end negative look-ahead

换句话说,我们正在寻找符合以下条件的行:

  • 有一个#define指令,
  • 不是格式正确的