CÏÝÚ壺ÅжϺêÊÇ·ñµÈÓÚÒ»¸ö³£Êý
ÏÂÃæÕâ¶Î´úÂëÓÐɶ´íÎó£¿
#if ULONG_MAX == 0xFFFFFFFF
inline unsigned long byte_swap(unsigned long x) { return __builtin_bswap32(x); }
inline long byte_swap(long x) { return __builtin_bswap32(x); }
#else
inline unsigned long byte_swap(unsigned long x) { return __builtin_bswap64(x); }
inline long byte_swap(long x) { return __builtin_bswap64(x); }
#endif // ULONG_MAX
µ± ULONG_MAX 䶨Òåʱ£¬±»ÅжÏΪ¼Ù£¡¶àôΣÏÕµÄÒ»¸öÏÝÚ壡
Ôö¼ÓÒÔÏÂÑéÖ¤¼´¿É²é´í£º
#ifdef ULONG_MAX
# if ULONG_MAX != 0xFFFFFFFFul
# if ULONG_MAX != 0xFFFFFFFFFFFFFFFFul
# error "ULONG_MAX error" is ULONG_MAX
# endif
# endif
#else
# error "ULONG_MAX is not defined"
#endif
Õâ¸ö bug ºÄ·ÑÁËÎÒÁ½¸öСʱ£¡
Ïà¹ØÎĵµ£º
source: http://blog.renren.com/blog/229071289/443686923
C/C++ÊÇ×îÖ÷ÒªµÄ±à³ÌÓïÑÔ¡£ÕâÀïÁгöÁË50ÃûÓÅÐãÍøÕ¾ºÍÍøÒ³Çåµ¥£¬ÕâÐ©ÍøÕ¾Ìṩc/c++Ô´´úÂë¡£Õâ·ÝÇåµ¥ÌṩÁËÔ´´úÂëµÄÁ´½ÓÒÔ¼°ËüÃǵÄС˵Ã÷¡£ÎÒÒѾ¡Á¦°üÀ¨×î¼ÑµÄC/C++Ô´´úÂëµÄÍøÕ¾¡£Õâ²»ÊÇÒ»¸öÍêÕûµÄÇåµ¥£¬ÄúÓн¨Òé¿ÉÒÔÁªÏµÎÒ£¬ÎÒ½«»¶ÓÄúµÄ½¨Ò飬ÒÔ½øÒ»²½¼ÓÇ¿Õâ·½Ãæ ......
×î½üʵÔÚÊÇ̫æÁË£¬ÕâÆªÕûÕû¾ÍÍÆ³ÙÁË1¸öÔÂÁË£¬ÊµÔÚÊǶԲ»Æð¡£Ö®Ç°±¾´òËãÕâ¸öÄ£¿é¾Í½áÊøÁË£¬Îļþ²Ù×÷¾Í²»Ð´ÁË£¬µ«ÊÇÎļþ²Ù×÷ÓÖÊÇÒ»¸öºÜÖØÒªµÄ¶«Î÷£¬¶øÇÒÒ²¸ÕºÃÄܹ»×ܽá֮ǰÎÒÃÇѧϰµÄËùÓÐ֪ʶ¡£Í¬Ê±Ò²ÎªÁ˽«Îļþ²Ù×÷Õâ¸ö³õѧÕßÈÏΪºÜÉñÃØµÄ¶«Î÷¸ø±¾ÖÊ»¯¡£Òò´Ë£¬±¾Æª½«ÖðÒ»½éÉÜCÓïÑÔµÄÎļþ²Ù×÷¡££¨±¾Ä£¿éµÄÃüÃû±¾À´ÊÇÏëC\C++Ò ......
ϵͳ½éÉÜ£º
´Ëϵͳ¾ßÓд«Í³ÊÓÆµ»áÒéµÄÒ»Çй¦ÄÜ£¬»ùÓÚä¯ÀÀÆ÷½çÃæ£¬¿ÉÒÔ¿ØÖÆÔ¶³ÌµÇ½£¬²Î»áÕß¿ÉÒÔͬʱ¿´µ½Ñݽ²ÕߺÍÑݽ²ÄÚÈÝ£¬²¢ÇåÎúµÄÌýµ½Ñݽ²ÕßÉùÒô£¬ÒѾÁË»ØÉùºÍÔëÒôµÄ´¦Àí£¬´ËÍ⻹¿ÉÒÔͬÉù´«Ò룬ÒÔÂú×㲻ͬÓïÖֲλáÈ˵ÄÒªÇ󡣲λáÕß»¹ÄÜʵÏÖ¶à»á³¡×ÔÓÉÇл»£¬²¢¿É²¥·ÅPPTµÈ¡£
ÐèÒªµÄÇëÁª ......
1.ÒýÑÔ
¡¡¡¡C++ÓïÑԵĴ´½¨³õÖÔÊÇ“a better C”£¬µ«ÊÇÕâ²¢²»Òâζ×ÅC++ÖÐÀàËÆCÓïÑÔµÄÈ«¾Ö±äÁ¿ºÍº¯ÊýËù²ÉÓõıàÒëºÍÁ¬½Ó·½Ê½ÓëCÓïÑÔÍêÈ«Ïàͬ¡£×÷ΪһÖÖÓûÓëC¼æÈݵÄÓïÑÔ£¬C++±£ÁôÁËÒ»²¿·Ö¹ý³ÌʽÓïÑÔµÄÌØµã£¨±»ÊÀÈ˳ÆÎª“²»³¹µ×µØÃæÏò¶ÔÏ󔣩£¬Òò¶øËü¿ÉÒÔ¶¨Òå²»ÊôÓÚÈκÎÀàµÄÈ«¾Ö±äÁ¿ºÍº¯Êý¡£µ«ÊÇ£¬C++±Ï¾ ......
ʱ³£ÔÚcppµÄ´úÂëÖ®Öп´µ½ÕâÑùµÄ´úÂë:
#ifdef __cplusplus
extern "C" {
#endif
//Ò»¶Î´úÂë
#ifdef __cplusplus
}
#endif
ÕâÑùµÄ´úÂëµ½µ×ÊÇʲôÒâË¼ÄØ£¿Ê×ÏÈ£¬__cplusplusÊÇcppÖеÄ×Ô¶¨Òåºê£¬ÄÇô¶¨ÒåÁËÕâ¸öºêµÄ»°±íʾÕâÊÇÒ»¶ÎcppµÄ´úÂ룬Ҳ¾ÍÊÇ˵£¬ÉÏÃæµÄ´úÂëµÄº ......