vscode用のLLVM風インクルードガードスニペット

全然記事書いてなかったので最近書いたC/C++/CUDA用のインクルードガードスニペットをメモ。

stackoverflow の回答をベースに*nixにも対応したつもり。

regex - Implement VSCode snippet for C++ header guard - Stack Overflow

"LLVM-like include guard": {
    "prefix": "IncludeGuard",
    "body": [
        "#ifndef ${TM_FILEPATH/(?:^.*[\\/](?:src|include)[\\/])?(\\w+)|(\\W+)/${1:/upcase}${2:+_}/gm}_",
        "#define ${TM_FILEPATH/(?:^.*[\\/](?:src|include)[\\/])?(\\w+)|(\\W+)/${1:/upcase}${2:+_}/gm}_",
        "",
        "$0",
        "",
        "#endif /* ${TM_FILEPATH/(?:^.*[\\/](?:src|include)[\\/])?(\\w+)|(\\W+)/${1:/upcase}${2:+_}/gm}_ */",
 ]
}

正規表現のテストはこちらから

regex101: build, test, and debug regex

LLVM風の書き方を採用していて/path-to-project/include/hoge/fuga/piyo.hの場合には#define HOGE_FUGA_PIYO_H_みたいになる。

正直 #pragma once でもいいと思う。