C++ 铿锵格式:宏缩进
我试图将clang格式应用于现有代码库,但遇到以下问题: 简化(和格式化)示例代码:C++ 铿锵格式:宏缩进,c++,macros,clang-format,C++,Macros,Clang Format,我试图将clang格式应用于现有代码库,但遇到以下问题: 简化(和格式化)示例代码: #define QUERY_BEGIN() #define QUERY_NORESULT() #define QUERY_END() void foo() { int a = 0; QUERY_BEGIN() a = 1; QUERY_NORESULT() a = 2; QUERY_END() } 我设置了以下选项: MacroBlockEnd:
#define QUERY_BEGIN()
#define QUERY_NORESULT()
#define QUERY_END()
void foo()
{
int a = 0;
QUERY_BEGIN()
a = 1;
QUERY_NORESULT()
a = 2;
QUERY_END()
}
我设置了以下选项:
MacroBlockEnd: 'QUERY_END'
MacroBlockBegin: 'QUERY_BEGIN'
我想要实现的是宏部件的以下格式:
QUERY_BEGIN()
a = 1;
QUERY_NORESULT()
a = 2;
QUERY_END()
我的第一个猜测是将QUERY\u NORESULT
设置为MacroBlockEnd
和MacroBlockBegin
,但这没有帮助。它会产生以下格式:
QUERY_BEGIN()
a = 1;
QUERY_NORESULT
a = 2;
QUERY_END()
目前是否有办法实现上述缩进?- 坏消息:抱歉,这在当前版本的clang format(7)中不可用李>
- 好消息:有一个
选项,它从clang format 8(尚未发布,但您可以从源代码构建)开始提供李>StatementMacros
void foo(int a, int b) {
Q_UNUSED(a)
return b;
}
此修补程序通过引入一个新选项来指定语句宏列表来处理这些情况。这将重新使用foreach宏已有的系统,以确保不会影响性能
◆ 语句宏
std::vector clang::format::FormatStyle::StatementMacros
应解释为完整语句的宏向量
典型的宏是表达式,需要添加分号;有时情况并非如此,这允许clang格式了解此类情况
例如:Q_UNUSED
文件格式.h第1061行的定义
由clang::format::FormatTokenLexer::FormatTokenLexer()、clang::format::getLLVMStyle()、llvm::yaml::MappingTraits语句宏['QUERY\u BEGIN()'、'QUERY\u NORESULT()'、'QUERY\u END()']
放入的.clang格式中
关闭此宏语句中的clang格式。引用的文档似乎表明“StatementMacros”设置不会影响缩进,但它避免了添加分号。
// clang-format off
void unformatted_code ;
// clang-format on