[英]Syntax: Single statement in function declaration
在C编程语言中,在单条语句的情况下可以省略代码块,例如:
if(1) exit();
现在,这仅适用于条件吗? 为什么这在函数的情况下无效:
void f(int a) exit();
这是 C 语法的一个特性。 在BNF中, function 定义类似于
FUNC_DEF ::= TYPE IDENTIFIER "(" PARAM_LIST ")" BLOCK
而声明是
STATEMENT ::= (EXPRESSION | DECLARATION | CONTROL | ) ";" | BLOCK
BLOCK ::= "{" STATEMENT* "}"
(简化以允许混合声明和语句,C++ 允许,但 C 不允许), if
语句是
CONDITIONAL ::= "if" "(" EXPRESSION ")" STATEMENT
暂时省略else
部分。
这样做的原因是,否则,您可以编写 function
void no_op() {}
作为
void no_op();
但后一种语法已用于表示声明。
条件语句的语法是这样的:
if(expression) statement
复合语句是一个语句。
compound statement
定义为
{ zero or more statements }
function 定义的语法是这样的
function_declaration compound_statement
因此,根据定义,function 主体必须是复合语句并具有{}
QED :)
有一个非常古老的方言 C,K&R C。 在这种方言中,function 声明可能如下所示:
fun_a(a,b)
char a;
float b;
{
fun_b(b,a);
}
我认为如果没有{
和}
就很难解析它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.