您的位置:首页 > 编程语言

一个难题: 怎样写一个输出自己源代码的程序?

2014-06-10 13:39 330 查看
一个难题: 怎样写一个输出自己源代码的程序? 要写一个可移植的自我再生的程序是件很困难的事, 部分原因是因为引用和字符集的难度。
这里是个经典的例子(应该以一行表示的, 虽然第一次执行后它后自我修复):
char*s="char*s=%c%s%c;main(){printf(s,34,s,34);}";
main(){printf(s,34,s,34);}
这段程序有一些依赖, 忽略了#include <stdio.h>, 还假设了双引号" 的值为34, 和ASCII 中的值一样。
这里还有一个有James Hu 发布的改进版:
#define q(k)main(){return!puts(#k"\nq("#k")");}
q(#define q(k)main(){return!puts(#k"\nq("#k")");})
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐