在C中,使用大括号的方法无所谓对还是错——只要每个开括号后都有一个闭括号,你的程序中就不再会出现与大括号有关的问题。然而,有三种著名的大括号格式经常被使用:
Kernighan和Ritchie,Allman,Whitesmiths。下文中将讨论这三种格式。
在《C程序设计语言(The C Programming Language)》一书中,Brian Kernighan和Dennis Ritchie介绍了他们所使用的大括号格式,这种格式如下所示:
if (argc<3) {
printf (" Error! Not enough arguments. Correct usage is ..\n" ) ;
printf("c:>eopyfile <source_file> <destination_file>\n") ;
exit (1) ;
}
else {
open_files () ;
while (! feof(infile)) {
read_data ( ) ;
write_data() ;
}
close files() ;
}
注意,在Kb&R格式中,开括号总是与使用它的语句在同一行上,而闭括号总是在它所关闭的语句的下一行上,并且与该语句对齐。例如,在上例中,if语句的开括号和它在同一行上,|f语句的闭括号在它的下一行上,并且与它对齐。在与if语句对应的else条件语句以及出现在程序段后部的while语句中,情况也是这样的。
下面是用Allman格式书写的同一个例子:
if (argc<3)
{
printf("Error! Not enough arguments. Correct usage is :\n" ) ;
printf("C:>copyfile <source_file> <destination_file>\n") ;
exit(1);
}
else
{
open_files ( );
while (! feof(infile))
{
read_data ( ) ;
write data();
}
close_files() ;
}
注意,在Allman格式中,每个大括号都单独成行,并且开括号和闭括号都与使用它们的语句对齐。
下面是用Whitesmiths格式书写的同一个例子:
if (argc<3)
{
printf("Error! Not enough arguments, Correct usage is :\n" );
printf ("C :> copyfile<source_file><destination_file>\n." ) ;
exit(1);
}
else
{
open files () ;
while (! feof(infile))
{
read_data() ;
write data();
}
close files () ;
}
与Allman格式相同,Whitesmiths格式也要求大括号单独成行,但是它们要和它们所包含的语句对齐。例如,在上例中,if语句的开括号是与第一个printf()函数调用对齐的。
不管你使用哪一种格式,一定要保持前后一致——这将有助于你自己或其它人更方便地读你的程序。