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
でもいいと思う。