|
一个例程中看到下面的一段语句,以往的经验实在是看不懂,大概整理了下,例程如下:
- =========================================================================
- 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]);
- }
- }
- =========================================
复制代码
为了搞清楚,在vc下做了个最简单的dos模板,但是编译也通不过,提示
error C2010: “.”: 宏形参表中的意外
error C2661: “print”: 没有重载函数接受 3 个参数
以为看过的c语言书籍里没有这样的,请高手指点一下。
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|