有个源代码看不懂,说明原理
本帖最后由 dt3tc 于 2015-6-18 11:57 编辑酷壳看到的源代码,功能是输出"hello world", 但看不懂,求解说
#define _________ }
#define ________ putchar
#define _______ main
#define _(a) ________(a);
#define ______ _______(){
#define __ ______ _(0x48)_(0x65)_(0x6C)_(0x6C)
#define ___ _(0x6F)_(0x2C)_(0x20)_(0x77)_(0x6F)
#define ____ _(0x72)_(0x6C)_(0x64)_(0x21)
#define _____ __ ___ ____ _________
#include<stdio.h>
_____
{:5_90:} 364904690 发表于 2015-6-18 10:28
? 乱码大赛作品 就是替换替换在替换
给你的建议 直接无视 可是我想知道具体的原理 都是下划线很容易看晕 我换个符号
#define _1 }
#define _2 putchar
#define _3 main
#define _(a) _2(a);
#define _4 _3(){
#define _5 _4 _(0x48)_(0x65)_(0x6C)_(0x6C)
#define _6 _(0x6F)_(0x2C)_(0x20)_(0x77)_(0x6F)
#define _7 _(0x72)_(0x6C)_(0x64)_(0x21)
#define _8 _5 _6 _7 _1
#include<stdio.h>
_8
你从下往上替换一下 ,立马知道 好吧,我还是把最终代码写给你看吧
#include<stdio.h>
main()
{
putchar(0x48);
putchar(0x65);
putchar(0x6C);
putchar(0x6C);
putchar(0x6F);
putchar(0x2C);
putchar(0x20);
putchar(0x77);
putchar(0x6F);
putchar(0x72);
putchar(0x6C);
putchar(0x64);
putchar(0x21);
}
不过这种代码在国内没什么意思,看看呵呵一下就行了 可以用gcc查看预处理后的代码啊 小名明SIU 发表于 2015-6-19 16:21
都是下划线很容易看晕 我换个符号
#define _1 }
#define _2 putchar
谢谢
页:
[1]