Thursday, March 5, 2009

typeof, ISO C, GCC, 没有空格的代码, 奇怪的比赛

这个故事的起源是Matrix67博客上的一篇文章, 一个叫做Time Limit Exceeded的创意编程比赛有一道很有意思的题: Compile Error, 这道题不允许代码中出现空格. 一个最简单的问题就是像 int a; 中的空格如何避免, Matrix67的文章中提到可以用typeof解决. 昨天Ray提醒我这个typeof在C语言里没见过, 然后我就一直想啊, 这个typeof是个什么东西啊. 查了一下才知道, 原来typeof不是标准C/C++中的关键字, 目前GCC提供了对typeof的支持, 这里有详细的解释, 里面有一个绝妙的例子, 可以在C中实现类似C++中Template的功能. 这是Wikipedia上关于typeof的解释: http://en.wikipedia.org/wiki/Typeof, 在C#、JS中也有这个关键字, 不过细节上有差别.

好了, 弄清了typeof的来龙去脉以后, 再回到那个编程比赛上. 现在我们就有了一种方法来避免空格了:
typeof(int)a;
本来以为这个已经够难想到的了, 不过又发现了一个更简单, 且很好理解的方法:
int(a);

没想到一个typeof引申了这么多东西出来, 真是神奇~

1 comment: