Qunie问题

Quine以哲学家 Willard van Orman Quine (1908-2000) 而命名,表示一个可以生成他自己的完全的源代码的程序。编写出某个语言中最简短的 quine 通常作为黑客们的消遣。

其中一种很简单的解法:

#define q(k) main(){return!puts(#k"\nq("#k")");}
q(#define q(k) main(){return !puts(#k"\nq("#k")");})

使用gcc -E a.c命令查看中间宏替换之后的代码如下

main(){return!puts("#define q(k) main(){ return !puts(#k\"\\nq(\"#k\")\"); }""\nq(""#define q(k) main(){ return !puts(#k\"\\nq(\"#k\")\"); }"")");}

 

posted @ 2016-05-22 16:49  柳如风  阅读(267)  评论(0编辑  收藏  举报
https://www.vultr.com/?ref=7677570