美文网首页
宏定义相关

宏定义相关

作者: 陈_振 | 来源:发表于2018-11-28 09:15 被阅读0次

    最近面试被问到将#define max(a, b)补充完整。这个知识点自己很久之前也详细了解过,要写出完美的定义会非常复杂。但这个东西我自己实在是用的太少,在面试的时候直接处于懵逼状态,连宏函数都忘记该怎样去写了。所以,趁热打铁,赶紧再记录一下。

    //GNUC MIN
    #define MIN(A,B)    ({ __typeof__(A) __a = (A); __typeof__(B) __b = (B); __a < __b ? __a : __b; })
    
    #define __NSX_PASTE__(A,B) A##B
    
    #define MIN(A,B) __NSMIN_IMPL__(A,B,__COUNTER__)
    
    #define __NSMIN_IMPL__(A,B,L) ({ __typeof__(A) __NSX_PASTE__(__a,L) = (A); \
                                     __typeof__(B) __NSX_PASTE__(__b,L) = (B); \
                                     (__NSX_PASTE__(__a,L) < __NSX_PASTE__(__b,L)) ? __NSX_PASTE__(__a,L) : __NSX_PASTE__(__b,L); \
                                  })
    

    下面这个链接是我很久之前看过的,讲的很详细了。

    宏定义的黑魔法 - 宏菜鸟起飞手册

    相关文章

      网友评论

          本文标题:宏定义相关

          本文链接:https://www.haomeiwen.com/subject/ekgoqqtx.html