GNU C __attribute__ »úÖÆ¼ò½é
ͻ񻣼
ÔÚѧϰlinuxÄں˴úÂ뼰һЩ¿ªÔ´Èí¼þµÄÔ´Â루È磺DirectFB£©£¬¾³£¿ÉÒÔ¿´µ½ÓйØ
__attribute__µÄÏà¹ØÊ¹Óᣱ¾ÎĽáºÏ×Ô¼ºµÄѧϰ¾Àú£¬½ÏΪÏêϸµÄ½éÉÜÁË__attribute__
Ïà¹ØÓï·¨¼°ÆäʹÓá£
---------------------------------------------------------
ÉùÃ÷£º
´ËÎÄΪԴ´£¬»¶Ó×ªÔØ£¬×ªÔØÇë±£ÁôÈçÏÂÐÅÏ¢
×÷ÕߣºÄô·É£¨afreez£© ±±¾©-Öйشå
ÁªÏµ·½Ê½£ºafreez@sina.com £¨»¶ÓÓë×÷Õß½»Á÷£©
³õ´Î·¢²¼Ê±¼ä£º2006-06-17
²»¾±¾ÈËͬÒ⣬²»µÃÓÃÓïÉÌÒµ»òÓ®ÀûÐÔÖÊÄ¿µÄ£¬·ñÔò£¬×÷ÕßÓÐȨ׷¾¿Ïà¹ØÔðÈΣ¡
---------------------------------------------------------
GNU CµÄÒ»´óÌØÉ«£¨È´²»±»³õѧÕßËùÖª£©¾ÍÊÇ__attribute__»úÖÆ¡£__attribute__
¿ÉÒÔÉèÖú¯ÊýÊôÐÔ£¨Function Attribute£©¡¢±äÁ¿ÊôÐÔ£¨Variable Attribute
£©ºÍÀàÐÍÊôÐÔ£¨Type Attribute£©¡£
__attribute__ÊéÐ´ÌØÕ÷ÊÇ£º__attribute__
ǰºó¶¼ÓÐÁ½¸öÏ»®Ïߣ¬²¢ÇкóÃæ»á½ô¸úÒ»¶ÔÔÀ¨»¡£¬À¨»¡ÀïÃæÊÇÏàÓ¦µÄ__attribute__
²ÎÊý¡£
__attribute__Óï·¨¸ñʽΪ£º
__attribute__ ((attribute-list))
ÆäλÖÃÔ¼ÊøÎª£º
·ÅÓÚÉùÃ÷µÄβ²¿“£»”֮ǰ¡£
º¯ÊýÊôÐÔ£¨Function Attribute£©
º¯ÊýÊôÐÔ¿ÉÒÔ°ïÖú¿ª·¢Õß°ÑÒ»Ð©ÌØÐÔÌí¼Óµ½º¯ÊýÉùÃ÷ÖУ¬´Ó¶ø¿ÉÒÔʹ±àÒëÆ÷ÔÚ´íÎó¼ì²é·½?
æµÄ¹δܸ¿´ó¡_attribute__»úÖÆÒ²ºÜÈÝÒ×ͬ·ÇGNUÓ¦ÓóÌÐò×öµ½¼æÈÝÖ®¹¦Ð§¡£
GNU CCÐèҪʹÓà –Wall
±àÒëÆ÷À´»÷»î¸Ã¹¦ÄÜ£¬ÕâÊÇ¿ØÖƾ¯¸æÐÅÏ¢µÄÒ»¸öºÜºÃµÄ·½Ê½¡£ÏÂÃæ½éÉܼ¸¸ö³£¼ûµÄÊôÐÔ²Î?
?
__attribute__ format
¸Ã__attribute__ÊôÐÔ¿ÉÒÔ¸ø±»ÉùÃ÷µÄº¯Êý¼ÓÉÏÀàËÆprintf»òÕßscanf
µÄÌØÕ÷£¬Ëü¿ÉÒÔʹ±àÒëÆ÷¼ì²éº¯ÊýÉùÃ÷ºÍº¯Êýʵ¼Êµ÷ÓòÎÊýÖ®¼äµÄ¸ñʽ»¯×Ö·û´®ÊÇ·ñÆ¥Åä?
£¸Ã¹δÜÊÖÓÐÓÃ£ÈÆäÊÇ´íһЩºÜÄÑ·¢ÏÖµ腷ug¡£
formatµÄÓï·¨¸ñʽΪ£º
format (archetype, string-index, first-to-check)
formatÊôÐÔ¸æËß±àÒëÆ÷£¬°´ÕÕprintf, scanf, strftime»òstrfmon
µÄ²ÎÊý±í¸ñʽ¹æÔò¶Ô¸Ãº¯ÊýµÄ²ÎÊý½øÐмì²é¡£“archetype”Ö¸¶¨ÊÇÄÄÖÖ·ç¸ñ£»“string-
index”Ö¸¶¨´«È뺯ÊýµÄµÚ¼¸¸ö²ÎÊýÊǸñʽ»¯×Ö·û´®£»“first-to-check
”Ö¸¶¨´Óº¯ÊýµÄµÚ¼¸¸ö²ÎÊý¿ªÊ¼°´ÉÏÊö¹æÔò½øÐмì²é¡£
¾ßÌåʹÓøñʽÈçÏ£º
__attribute__((format(printf,m,n)))
__attribute__((format
Ïà¹ØÎĵµ£º
extern "C"
Ŀ¼
¸ÅÊö ±àÒ뷽ʽ ϰ¹ßÓ÷¨
¸ÅÊö
¡¡¡¡extern "C" °üº¬Ë«Öغ¬Ò壬´Ó×ÖÃæÉϼ´¿ÉµÃµ½£ºÊ×ÏÈ£¬±»ËüÐÞÊεÄÄ¿±êÊÇ“extern”µÄ£»Æä´Î£¬±»ËüÐÞÊεÄÄ¿±êÊÇ“C”µÄ¡£ÈÃÎÒÃÇÀ´Ïêϸ½â¶ÁÕâÁ½Öغ¬Òå¡£
¡¡¡¡£¨1£© ±»extern "C"ÏÞ¶¨µÄº¯Êý»ò±äÁ¿ÊÇexternÀàÐ͵Ä
¡¡¡¡externÊÇC/C++ÓïÑÔÖбíÃ÷º¯Ê ......
ÔÎĵØÖ·£ºhttp://www.layz.net/blog/user1/xuanxuan/archives/2006/67.html
ÔÚC++ÖУ¬ÓÐÒ»¸östreamÕâ¸öÀ࣬ËùÓеÄI/O¶¼ÒÔÕâ¸ö“Á÷”ÀàΪ»ù´¡µÄ£¬°üÀ¨ÎÒÃÇÒªÈÏʶµÄÎļþI/O£¬streamÕâ¸öÀàÓÐÁ½¸öÖØÒªµÄÔËËã·û£º
1¡¢²åÈëÆ÷(<<)
¡¡¡¡ÏòÁ÷Êä³öÊý¾Ý¡£±ÈÈç˵ϵͳÓÐÒ»¸öĬÈϵıê×¼Êä³öÁ÷(cout)£ ......
¶ÔÓÚC±àд³ÌÐò£¬´ó²¿·Ö¶¼¿ÉÒÔͨ¹ý£¬µ«ÊDz»»áÍêÈ«¼æÈÝ£¬¾ÙÁ½¸öÀý×Ó£º
1.
char *str;
str = malloc(32);
2.
char ch[3] = "abc";
gcc -g -o test test.c
g++ -g -o test test.c
ÒòΪC++¼ì²é¸ü¼ÓÑϸñ£¬CûÓÐÕâôÑϸñ¡£
´ó¼Ò¿ÉÒԱȽÏһϣ¬gcc²»»á±¨´í£¬g++»á±¨´í¡£
Èç¹û´ó¼Ò»¹ÓÐеÄcase,»¶Ó ......
ºÎΪָÕë £¿
¡¡¡¡Ö¸Õë»ù±¾ÉÏºÍÆäËüµÄ±äÁ¿Ò»Ñù£¬Î¨Ò»µÄÒ»µã²»Í¬¾ÍÊÇÖ¸Õë²¢²»°üº¬Êµ¼ÊµÄÊý¾Ý£¬¶øÊǰüº¬ÁËÒ»¸öÖ¸ÏòÄÚ´æÎ»ÖõĵØÖ·£¬Äã¿ÉÒÔÔÚÕâ¸öµØÖ·ÕÒµ½Ä³Ð©ÐÅÏ¢¡£ÕâÊÇÒ»¸öºÜÖØÒªµÄ¸ÅÄ²¢ÇÒÐí¶à³ÌÐò»òÕß˼Ïë¶¼Êǽ«Ö¸Õë×÷ΪËüÃǵÄÉè¼Æ»ù´¡£¬ÀýÈçÁ´±í¡£
¿ªÊ¼
¡¡¡¡ÈçºÎ¶¨ÒåÒ»¸öÖ¸Õ룿ßÀ£¬¾ÍÏñ¶¨ÒåÆäËüµÄ±äÁ¿Ò»Ñù£¬²»¹ýÄ㻹Р......
CûÓÐÀà
ÕâÈÃÈËºÜÆ£±¹
¶ÔÏóµÄ˵·¨ºÜʱ÷Ö
²»¾ÍÊǼ̳зâ×°×éºÏÈËÈË»á
ÓÒ×ßÊÇC++£¬Õâ¸ö´óÖÚ¶¼ÊìϤËü
×ó×ß¾ÍÊÇobjective-c£¬¶ãÔÚÆ§¾²Æ§¾²µÄÂó½ðËþ
±¾ÊÇͬ¸ùÉúµÄC
ÈçºÎ¸ß¾ÙÃæÏò¶ÔÏóµÄ´óÆì
Çóͬ´æÒì±êÐÂÁ¢ÒìÇÒÌýһһϸ·ÖÇå
¶ÔÏóµÄC
ÊDz»Í¬µÄC
ÀàµÄ´¦ÀíÓëÖÚ²»Í¬Öصã񻂿·Ö
²»Öظ´ÊÇÎҵĿÚÍ·ìø
ÈκÎʱºòÎÒֻ˵һ´Î¸æËß ......