缩进 C 代码,Unix
Indenting C code, Unix
我在文档中搜索了缩进,但最终我放弃了,我想这样缩进代码:
int main(int argc, char **argv){
some code;
}
我知道缩进 -kr 给你这样的大括号,但 -kr 样式还包括
int
main(int argc, char **argv){
some code;
}
在 main 之前的这个 int 让我毛骨悚然。
有人可以告诉我这个选项吗?
您感兴趣的特定选项是
-npsl
--dont-break-procedure-type
Put the type of a procedure on the same line as its name.
-brf
--braces-on-func-def-line
Put braces on function definition line.
按照建议,GNU indent manual 描述了各种选项。
这是一个快速脚本,用于说明这些选项对基本预定义样式的影响:
#!/bin/sh
for opt in gnu linux orig kr
do
echo "** $opt"
indent -st -$opt -npsl -brf hello.c
done
和输入文件:
#include <stdio.h>
int main(int argc, char **argv) { int n; for (n = 0; n < argc; ++n) printf("arg%d=%s\n", n, argv[n]); return 0; }
和相应的输出:
** gnu
#include <stdio.h>
int main(int argc, char **argv) {
int n;
for (n = 0; n < argc; ++n)
printf("arg%d=%s\n", n, argv[n]);
return 0;
}
** linux
#include <stdio.h>
int main(int argc, char **argv) {
int n;
for (n = 0; n < argc; ++n)
printf("arg%d=%s\n", n, argv[n]);
return 0;
}
** orig
#include <stdio.h>
int main(int argc, char **argv) {
int n;
for (n = 0; n < argc; ++n)
printf("arg%d=%s\n", n, argv[n]);
return 0;
}
** kr
#include <stdio.h>
int main(int argc, char **argv) {
int n;
for (n = 0; n < argc; ++n)
printf("arg%d=%s\n", n, argv[n]);
return 0;
}
我没有看到抑制 {
字符前的 space 的选项。
您可能正在寻找 -npsl
选项。 -psl
(--procnames-start-lines
) 选项使正在定义的过程类型放在过程名称之前的行中。因此,如果您指定该选项,所有函数声明都将更改为:
int main(int argc, char **argv){
some code;
}
到
int
main(int argc, char **argv){
some code;
}
您可以检查您是否在普通类型 -kr
中包含 -psl
并将其删除,或者如果不包含,您可以指定 -npsl
(--dont-break-procedure-type
)并且类型不会单独放在一行。
有trade-off所有选项。我喜欢和 int main() {
在同一行的大括号,但是对于函数定义我喜欢在下一行的大括号。例如:
type function
{
...
}
因此,如果您有诸如此类的相互排斥的偏好,您只需选择您希望大部分代码合并的偏好,然后调整其余的。您可以尝试以下调用:
indent -i 4 -lp -ts 8 -lp -lps -br -brs -blf -ce -cdw -pcs -bs -nbc -npsl -saf -sai -saw -nut
这是一种平衡的缩进方案。
我在文档中搜索了缩进,但最终我放弃了,我想这样缩进代码:
int main(int argc, char **argv){
some code;
}
我知道缩进 -kr 给你这样的大括号,但 -kr 样式还包括
int
main(int argc, char **argv){
some code;
}
在 main 之前的这个 int 让我毛骨悚然。
有人可以告诉我这个选项吗?
您感兴趣的特定选项是
-npsl
--dont-break-procedure-type
Put the type of a procedure on the same line as its name.
-brf
--braces-on-func-def-line
Put braces on function definition line.
按照建议,GNU indent manual 描述了各种选项。
这是一个快速脚本,用于说明这些选项对基本预定义样式的影响:
#!/bin/sh
for opt in gnu linux orig kr
do
echo "** $opt"
indent -st -$opt -npsl -brf hello.c
done
和输入文件:
#include <stdio.h>
int main(int argc, char **argv) { int n; for (n = 0; n < argc; ++n) printf("arg%d=%s\n", n, argv[n]); return 0; }
和相应的输出:
** gnu
#include <stdio.h>
int main(int argc, char **argv) {
int n;
for (n = 0; n < argc; ++n)
printf("arg%d=%s\n", n, argv[n]);
return 0;
}
** linux
#include <stdio.h>
int main(int argc, char **argv) {
int n;
for (n = 0; n < argc; ++n)
printf("arg%d=%s\n", n, argv[n]);
return 0;
}
** orig
#include <stdio.h>
int main(int argc, char **argv) {
int n;
for (n = 0; n < argc; ++n)
printf("arg%d=%s\n", n, argv[n]);
return 0;
}
** kr
#include <stdio.h>
int main(int argc, char **argv) {
int n;
for (n = 0; n < argc; ++n)
printf("arg%d=%s\n", n, argv[n]);
return 0;
}
我没有看到抑制 {
字符前的 space 的选项。
您可能正在寻找 -npsl
选项。 -psl
(--procnames-start-lines
) 选项使正在定义的过程类型放在过程名称之前的行中。因此,如果您指定该选项,所有函数声明都将更改为:
int main(int argc, char **argv){
some code;
}
到
int
main(int argc, char **argv){
some code;
}
您可以检查您是否在普通类型 -kr
中包含 -psl
并将其删除,或者如果不包含,您可以指定 -npsl
(--dont-break-procedure-type
)并且类型不会单独放在一行。
有trade-off所有选项。我喜欢和 int main() {
在同一行的大括号,但是对于函数定义我喜欢在下一行的大括号。例如:
type function
{
...
}
因此,如果您有诸如此类的相互排斥的偏好,您只需选择您希望大部分代码合并的偏好,然后调整其余的。您可以尝试以下调用:
indent -i 4 -lp -ts 8 -lp -lps -br -brs -blf -ce -cdw -pcs -bs -nbc -npsl -saf -sai -saw -nut
这是一种平衡的缩进方案。