Tre*_*key 3 c++ syntax function parentheses function-call
我最近遇到的代码看起来像这样:
void function(int a, int b, int c){
//...
}
int main(){
//...
(function)(1,2,3);
//...
}
Run Code Online (Sandbox Code Playgroud)
在parens中单独包装函数名称有什么意义?
它有什么不同的影响function(1,2,3);吗?
为什么语言允许这样的语法?
我能想到的唯一function一个问题就是将其定义为宏.
在C中,标准库函数也可以实现为类似函数的宏(为了效率).将函数名括在括号中会调用实际函数(因为函数名后面没有a ().
至于语言允许语法的原因,函数调用包含指向函数类型的表达式,后跟括号中的参数.在大多数情况下,前缀是一个函数名(它被隐式转换为指向函数的指针),但它可以是一个任意表达式.任何表达式都可以括在括号中,通常不会改变其含义(除了影响优先级).(但请参阅Jonathan Leffler对一些反例的评论.)
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |