【发布时间】:2019-09-30 16:30:06
【问题描述】:
我想使用clang-format 来格式化规范代码 (<file>.sc)
Specc 有一些预定义的关键字,它们的格式可以与 class 在 C++ 中的格式相同:
behaviorinterface
我可以在.clang-format 文件中实现这一点吗?
带有behavior关键字的输入文件:
#include <stdio.h>
behavior Main(void)
{
int main(void)
{
printf("Hello World!\n");
return(0);
}
};
clang-format -style=Mozilla hello.sc的输出
#include <stdio.h>
behavior Main(void) { int main(void) { printf("Hello World!\n");
return (0);
}
}
;
如果我使用关键字class 而不是behavior,这就是我得到的输出,这就是我想要的:
#include <stdio.h>
class Main(void) {
int main(void) {
printf("Hello World!\n");
return (0);
}
};
TLDR:
我希望 clang-format 处理来自 specc 的关键字 behavior,因为它处理关键字 class。
注意,我只想格式化文件。我不打算用 C/C++ 编译器编译它。
【问题讨论】:
-
@Jarod42 能否详细说明如何使用
MACRO? -
@ChrisTurner,语言 SpecC 是 C 的超集,
behavior是 specc 编译器可以理解的关键字。我想用clang-format来对待关键字behavior,就像它对待关键字class一样。 -
所以你想要的是clang看到“行为”并理解“类”。 IE。您实际上并不想要任何功能差异,任何含义差异,只允许写“行为”并表示“类”?
-
您可以围绕
clang-format编写一个简短的脚本,在其前后调用sed将behavior替换为class(反之亦然)。 -
好的。我还没有真正意识到您根本没有尝试编译它,只是漂亮地打印它。我还担心您的
seding 可能会无意中更改注释或变量名中的class或behaviour一词的其他实例。最好将behaviour更改为class /*AS behaviour*/,然后只将class /*AS behaviour*/更改回behaviour
标签: c++ c clang-format