• 微风漂过
    2020-02-05
    #define P(item) printf("%s = %d\n", #item, item);
    #item前面的#,作用是什么?

    作者回复: 是把iterm原本要替换的内容变成对应的字符串。你可以自己写一个小的实验性程序,试一下#的作用。

    
    
  • 潮汐
    2020-02-01
    看宏里的代码意图,是要获取参数a的类型(类型文本值,整型int,字符型char...)。可猜出__typeof(a)用于获取a的数据类型值。

    作者回复: 正确!d(^_^o)

    
    
  • 徐洲更
    2020-01-30
    __typeof(a) 用于获取a的变量类型
    C语言的变量要定义后才能用, swap宏是一个适用于多种数据结构的宏,因此需要根据具体变量声明具体的变量类型

    作者回复: d(^_^o)没问题!

    
    
  • 栾~龟虽寿!
    2020-01-30
    我认为log函数,有两个形参,我们只输入了一个,这个错误,对不?

    作者回复: 既然需求是做一个使用方式和printf一样的函数,printf支持单个参数的形式,log也应该支持。所以,传入一个参数没问题。

     1
    
  • Aaron Shan
    2020-01-30
    #define MAX(a, b) ((a) > (b) ? (a) : (b))
    给所有变量加上括号,保证代入宏的每个变量都是相互独立

    作者回复: 已经很棒了,你的答案应该可以正确的输出样例中的前四行,后两行:
    P(MAX(a++, 5)); MAX(a++, 5) = 6
    P(a); --> a = 7
    你的这个方法就不行了。

    
    
  • Geek_Andy_Lee00
    2020-01-30
    猜测__typeof(a)函数的作用是声明变量,因为我删掉这段代码后,编译:[Error] '__temp' undeclared (first use in this function)。“搞事情”没搞成 - _ -

    作者回复: 哈哈哈,猜测差不多正确。你可以吧 __typeof 看成是类型,就是 int 或者 double 或者是别的什么类型,具体是什么类型呢,根据 __typeof 括号中的表达式来决定。也就是说,其中 a 要是整型,那么 __typeof(a) 最终会被替换成为 int。

    
    
  • 奔跑的八戒
    2020-01-30
    看完,睡觉。明天再消化!

    作者回复: d(^_^o)

    
    
我们在线,来聊聊吧