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
Ïà¹ØÎĵµ£º
¶ÔÓÚ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,»¶Ó ......
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
EXEC SQL include sqlca;
EXEC ORACLE OPTION (RELEASE_CURSOR = YES);
EXEC SQL BEGIN DECLARE SECTION;
& ......
CûÓÐÀà
ÕâÈÃÈËºÜÆ£±¹
¶ÔÏóµÄ˵·¨ºÜʱ÷Ö
²»¾ÍÊǼ̳зâ×°×éºÏÈËÈË»á
ÓÒ×ßÊÇC++£¬Õâ¸ö´óÖÚ¶¼ÊìϤËü
×ó×ß¾ÍÊÇobjective-c£¬¶ãÔÚÆ§¾²Æ§¾²µÄÂó½ðËþ
±¾ÊÇͬ¸ùÉúµÄC
ÈçºÎ¸ß¾ÙÃæÏò¶ÔÏóµÄ´óÆì
Çóͬ´æÒì±êÐÂÁ¢ÒìÇÒÌýһһϸ·ÖÇå
¶ÔÏóµÄC
ÊDz»Í¬µÄC
ÀàµÄ´¦ÀíÓëÖÚ²»Í¬Öصã񻂿·Ö
²»Öظ´ÊÇÎҵĿÚÍ·ìø
ÈκÎʱºòÎÒֻ˵һ´Î¸æËß ......
1.ÒýÑÔ
¡¡¡¡±¾ÎĵÄд×÷Ä¿µÄ²¢²»ÔÚÓÚÌṩC/C++³ÌÐòÔ±ÇóÖ°ÃæÊÔÖ¸µ¼£¬¶øÖ¼ÔÚ´Ó¼¼ÊõÉÏ·ÖÎöÃæÊÔÌâµÄÄÚº¡£ÎÄÖеĴó¶àÊýÃæÊÔÌâÀ´×Ô¸÷´óÂÛ̳£¬²¿·ÖÊÔÌâ½â´ðÒ²²Î¿¼ÁËÍøÓѵÄÒâ¼û¡£
¡¡¡¡Ðí¶àÃæÊÔÌâ¿´ËÆ¼òµ¥£¬È´ÐèÒªÉîºñµÄ»ù±¾¹¦²ÅÄܸø³öÍêÃÀµÄ½â´ð¡£ÆóÒµÒªÇóÃæÊÔÕßдһ¸ö×î¼òµ¥µÄstrcpyº¯Êý¶¼¿É¿´³öÃæÊÔÕßÔÚ¼¼ÊõÉϾ¿¾¹´ïµ½Á ......