【发布时间】:2020-01-31 08:40:27
【问题描述】:
为什么 C++ 没有关键字来定义/声明函数?基本上该语言中的所有其他设计抽象都有一个(struct、class、concept、module、...)。
它不会使easier to parse 的语言更加一致吗?大多数“现代”语言似乎都是这样发展的(fn in rust,fun in kotlin,...)。
【问题讨论】:
-
你的意思是,除了声明中的括号?
-
是的,有一个实际的关键字使其明确。
-
如果你喜欢你可以使用
#define function然后function int foo(){...};:-) -
IOCCC 2020 年奖颁给了@schorsch312 ...
-
解析函数定义并不难。使 C++ 难以解析(实际上是图灵完备)的原因是模板。考虑一下:
template<bool x, class C> void foo(C &c){ if(x) c.push_back(0); else c.push_back(1); }及其在template<class C, int a, int b> void bar(C &c){ foo<a<b>(c); }中的调用 解析器必须怀疑每个尖括号是模板实例化的一部分还是运算符。
标签: c++ function parsing keyword language-design