【发布时间】:2011-08-02 05:03:18
【问题描述】:
我一直在研究 Ruby,发现它的关键字“直到”和“除非”非常有趣。所以我想什么是在 C/C++ 中添加类似关键字的好方法。这是我想出的:
#define until(x) while(!(x))
#define unless(x) if(!(x))
我正在寻找一些关于此的建议。谁能推荐一个更好的选择?
这是我编写的一个程序示例,用于说明我打算做什么:
#include <stdio.h>
#include <stdlib.h>
#define until(x) while(!(x))
#define unless(x) if(!(x))
unsigned int factorial(unsigned int n) {
unsigned int fact=1, i;
until ( n==0 )
fact *= n--;
return fact;
}
int main(int argc, char*argv[]) {
unless (argc==2)
puts("Usage: fact <num>");
else {
int n = atoi(argv[1]);
if (n<0)
puts("please give +ve number");
else
printf("factorial(%u) = %u\n",n,factorial(n));
}
return 0;
}
如果您能指出一些可用于 C 或 C++ 的类似技巧的参考资料,那就太好了。
【问题讨论】:
-
看来你已经做到了。
-
虽然这些一开始看起来很花哨,但即使你自己编程也更适合使用标准 C++。在团队合作中,这是不行的。您的代码看起来不熟悉。我记得某个
sugar.h包含类似 Pascal 的定义... -
我认为我不喜欢带有
else子句的unless(但是我喜欢当/除非在lisp 中)。until循环并没有给我留下深刻的印象,但可能是因为我以前从未使用过它。 -
您可能对这个项目感兴趣:lolcode.com 它还添加了一些语法糖... :D
-
如果你必须这样做,我唯一的建议是正确拼写
until。
标签: c++ c syntax metaprogramming syntactic-sugar