我正在使用 indent
实用程序在我的代码上应用代码样式。我遇到以下问题:
#ifdef __cplusplus
#define BEGIN_C_DECLS extern "C" {
#define END_C_DECLS }
#else /* !__cplusplus */
#define BEGIN_C_DECLS
#define END_C_DECLS
#endif /* __cplusplus */
BEGIN_C_DECLS
int x;
...
END_C_DECLS
应用indent -npro -kr -i8 -ts8 -sob -l80 -ss -ncs
后我得到:
BEGIN_C_DECLS int x
在同一行。
有什么想法如何将它们保持在不同的行上吗?
最佳答案
由于 indent 不是 C 解析器(不可能是因为它无法处理 #include
指令),因此它使用启发式方法来确定哪些标记是标识符或 typedef 名称以及哪种标记这些形成的句法单元。这显然对你正在做的事情做出了错误的猜测——修改 C 语法。
你可以做的就是像这样包装宏
/* *INDENT-OFF* */
BEGIN_C_DECLS
/* *INDENT-ON* */
int x;
/* *INDENT-OFF* */
END_C_DECLS
/* *INDENT-ON* */
另一种方法是明智地使用空预处理器指令#
(最终它对某事有用!):
#
BEGIN_C_DECLS
#
int x;
#
END_C_DECLS
#
关于c - 如何在包含 BEGIN_C_DECLS 宏的行上正确应用缩进?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17087509/