clang-format 如何忽略 extern C?
clang-format how to ignore extern C?
这是我当前的示例代码
#ifdef __cplusplus
extern "C"
{
#endif
typedef enum
{
BUY = 1,
SELL = 2
} OrderAction_e;
#ifdef __cplusplus
}
#endif
在我 运行 clang 格式之后,它正在改变如下。
#ifdef __cplusplus
extern "C"
{
#endif
typedef enum
{
BUY = 1,
SELL = 2
} OrderAction_e;
#ifdef __cplusplus
}
#endif
它为我的所有函数和 typedef 添加了额外的两个空格。
有没有我可以用来忽略外部 C 大括号的选项,这样我的代码看起来就和我上面粘贴的第一个版本的代码一样没有变化。
以下是我公司使用的clang版本
LLVM (http://llvm.org/):
LLVM version 3.4.2
如果您使用的是更高版本的 clang-format,您可能会非常接近。但是对于 3.4.2,我不这么认为。
对于 6.0.0 版,你可以非常接近,但似乎有必要将大括号与 extern "C"
放在同一行以禁用 [=11= 的缩进] 部分。这样做需要使用 BreakBeforeBraces
的 Custom
设置。这种禁用缩进 extern "C"
块的行为似乎没有在任何地方记录,但它确实对我有用。
尝试修改您的 .clang-format
文件以包含以下内容:
BraceWrapping:
AfterClass: true
AfterControlStatement: true
AfterEnum: true # <-- You need this
AfterFunction: true
AfterNamespace: true
AfterObjCDeclaration: true
AfterStruct: true
AfterUnion: true
AfterExternBlock: false # <-- And this
BeforeCatch: true
BeforeElse: true
IndentBraces: false
SplitEmptyFunction: false
SplitEmptyRecord: false
SplitEmptyNamespace: false
BreakBeforeBraces: Custom # <-- And this
请注意,那里有很多选项,您可以保留这些选项,但您通常会设置它们。只有 AfterEnum
、AfterExternBlock
和 BreakBeforeBraces
的值对此很重要。有关这些设置的更多详细信息,请参阅 documentation。
如果您还没有 .clang-format
文件,您可以先执行 clang-format -dump-config > .clang-format
然后编辑文件。
这是我当前的示例代码
#ifdef __cplusplus
extern "C"
{
#endif
typedef enum
{
BUY = 1,
SELL = 2
} OrderAction_e;
#ifdef __cplusplus
}
#endif
在我 运行 clang 格式之后,它正在改变如下。
#ifdef __cplusplus
extern "C"
{
#endif
typedef enum
{
BUY = 1,
SELL = 2
} OrderAction_e;
#ifdef __cplusplus
}
#endif
它为我的所有函数和 typedef 添加了额外的两个空格。
有没有我可以用来忽略外部 C 大括号的选项,这样我的代码看起来就和我上面粘贴的第一个版本的代码一样没有变化。
以下是我公司使用的clang版本
LLVM (http://llvm.org/):
LLVM version 3.4.2
如果您使用的是更高版本的 clang-format,您可能会非常接近。但是对于 3.4.2,我不这么认为。
对于 6.0.0 版,你可以非常接近,但似乎有必要将大括号与 extern "C"
放在同一行以禁用 [=11= 的缩进] 部分。这样做需要使用 BreakBeforeBraces
的 Custom
设置。这种禁用缩进 extern "C"
块的行为似乎没有在任何地方记录,但它确实对我有用。
尝试修改您的 .clang-format
文件以包含以下内容:
BraceWrapping:
AfterClass: true
AfterControlStatement: true
AfterEnum: true # <-- You need this
AfterFunction: true
AfterNamespace: true
AfterObjCDeclaration: true
AfterStruct: true
AfterUnion: true
AfterExternBlock: false # <-- And this
BeforeCatch: true
BeforeElse: true
IndentBraces: false
SplitEmptyFunction: false
SplitEmptyRecord: false
SplitEmptyNamespace: false
BreakBeforeBraces: Custom # <-- And this
请注意,那里有很多选项,您可以保留这些选项,但您通常会设置它们。只有 AfterEnum
、AfterExternBlock
和 BreakBeforeBraces
的值对此很重要。有关这些设置的更多详细信息,请参阅 documentation。
如果您还没有 .clang-format
文件,您可以先执行 clang-format -dump-config > .clang-format
然后编辑文件。