打印

从没见识过这么复杂的c语句,实在是看不懂,高手解释下吧

[复制链接]
646|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wangjiahao88|  楼主 | 2016-6-20 19:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

=========================================================================

    void print(char x) { printf("%c",x); }
    void print(int x) { printf("%d",x); }

#define LogDebug_();
#define LogDebug_1(x) print(x);
#define LogDebug_2(x, args...) print(x); LogDebug_1(args);
#define LogDebug_3(x, args...) print(x); LogDebug_2(args);
#define LogDebug_4(x, args...) print(x); LogDebug_3(args);
#define LogDebug_5(x, args...) print(x); LogDebug_4(args);
#define LogDebug_6(x, args...) print(x); LogDebug_5(args);
#define LogDebug_7(x, args...) print(x); LogDebug_6(args);
#define LogDebug_8(x, args...) print(x); LogDebug_7(args);
#define LogDebug_9(x, args...) print(x); LogDebug_8(args);
#define LogDebug_10(x, args...) print(x); LogDebug_9(args);
#define LogDebug_11(x, args...) print(x); LogDebug_10(args);

#define _NUM_ARGS2(X,X64,X63,X62,X61,X60,X59,X58,X57,X56,X55,X54,X53,X52,X51,X50,X49,X48,X47,X46,X45,X44,X43,X42,X41,X40,X39,X38,X37,X36,X35,X34,X33,X32,X31,X30,X29,X28,X27,X26,X25,X24,X23,X22,X21,X20,X19,X18,X17,X16,X15,X14,X13,X12,X11,X10,X9,X8,X7,X6,X5,X4,X3,X2,X1,N,...) N
#define NUM_ARGS(...) _NUM_ARGS2(0, __VA_ARGS__ ,64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)

#define LogDebug_N2(N, args...) LogDebug_ ## N(args)
#define LogDebug_N(N, args...) LogDebug_N2(N, args)
#define LogDebug(args...) do { LogDebug_N(NUM_ARGS(args), args);} while(0)



void main( void )
{
    int Tmp;
    int DebugData[160];
    for(Tmp = 0;Tmp < 160; Tmp++)
    {
        DebugData[Tmp] = Tmp;
    }

    for(Tmp = 0;Tmp < 160; Tmp++)
    {
        LogDebug(Tmp, ':', DebugData[Tmp]);
    }

}

=========================================


相关帖子

沙发
喵喵小星人| | 2016-6-20 21:11 | 只看该作者
把函数用#define 宏定义了而已,新唐的库就是这么搞的

使用特权

评论回复
板凳
maninman1981| | 2016-6-26 16:31 | 只看该作者
不知道这么搞,效率会不会很高呢?和以前普通的库相比,效率可以提高多少

使用特权

评论回复
地板
rmbass| | 2016-6-26 22:50 | 只看该作者
这样写,不容易移植的,只能适用于固定的功能吧

使用特权

评论回复
5
yysforever| | 2016-6-27 14:52 | 只看该作者
这#define 也太长了了吧,会不会占用很大的时间呢?

使用特权

评论回复
6
冰是睡着的冰| | 2016-6-27 16:06 | 只看该作者
yysforever 发表于 2016-6-27 14:52
这#define 也太长了了吧,会不会占用很大的时间呢?

不会,#define占用的是预编译的时间,不占用系统执行时间的

使用特权

评论回复
7
jouney316| | 2016-6-28 07:35 | 只看该作者
yysforever 发表于 2016-6-27 14:52
这#define 也太长了了吧,会不会占用很大的时间呢?

不会,会使速度变得更快了!

使用特权

评论回复
8
wangjiahao88|  楼主 | 2016-7-7 16:10 | 只看该作者
是啊!

只是固定的功能的!

使用特权

评论回复
9
wangjiahao88|  楼主 | 2016-11-26 17:17 | 只看该作者
#define占用的是预编译的时间,不占用系统执行时间的

学习了!

谢谢!

使用特权

评论回复
10
wangjiahao88|  楼主 | 2016-11-26 17:18 | 只看该作者
是不是 用的define越多,程序就会越方便啊?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

474

主题

7520

帖子

30

粉丝