一个快速,有趣的问题 - C / C ++中的函数声明和纯解析立场中的else-if语句块之间有什么区别?
void function_name(arguments) {
[statement-block]
}
else if(arguments) {
[statement-block]
}
寻找最佳解决方案! =)
编辑:感谢有识之士。我实际上正在写一个正则表达式来匹配程序中的所有函数,我开始得到这些 - 如果块结果。那是我意识到两者之间的独特联系。 =)
答案 0 :(得分:3)
关键字 - 即else
和if
- 保留给。
函数声明以类型开头,因此解析器必须确保永远不会有类似else
或if
的类型表达式。
答案 1 :(得分:2)
这两者实际上完全不同。
一个函数遵循以下模式:
return-type function([argument1, argument2... argumentN]) // arguments optional
{
[statement-block]
}
另一方面,如果你用C风格编写它的方式,则是单个语句else块的特例。就像省略花括号时在else下可以有一个语句一样:
if (boolean-condition)
// ...
else
single-statement;
单个语句也可以是if-else语句:
if (boolean-condition)
// ...
else
if (boolean-condition)
{
// ...
}
通常以您的方式书写(else if (...)
)。
此外,没有参数列表,只是一个必需的布尔条件,并且else if
中没有返回类型。所以一个是子程序的定义,另一个是链接在一起的两个条件块 - 没有什么特别连接这两个。这是一个很好的例子,为什么正则表达式不能用于解析C ++ / HTML / XML /具有复杂语法的任何东西。