Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

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" °üº¬Ë«Öغ¬Ò壬´Ó×ÖÃæÉϼ´¿ÉµÃµ½£ºÊ×ÏÈ£¬±»ËüÐÞÊεÄÄ¿±êÊÇ“extern”µÄ£»Æä´Î£¬±»ËüÐÞÊεÄÄ¿±êÊÇ“C”µÄ¡£ÈÃÎÒÃÇÀ´Ïêϸ½â¶ÁÕâÁ½Öغ¬Òå¡£
¡¡¡¡£¨1£© ±»extern "C"ÏÞ¶¨µÄº¯Êý»ò±äÁ¿ÊÇexternÀàÐ͵Ä
¡¡¡¡externÊÇC/C++ÓïÑÔÖбíÃ÷º¯Ê ......

ǶÈëʽLinuxµÄLCDÇý¶¯£¨FB @ s3c2410£©

CPU : ARM9 s3c2410 
LCD : ¹æ¸ñ²»Ã÷£¨Õâ¸öºÜÎÞÄΣ¬µ«ÊÇÎÒËùÖªµÀµÄÖ»ÓÐÒ»¸ö·Ö±æÂÊ£©
Ô´ÂëÐ޸ģº
/linux-2.6.30.4/arch/arm/mach-s3c2410/mach-smdk2410.c
        ÔÚÕâ¸öÎļþÖмÓÈëframebufferµÄ³õʼ»¯Êý¾Ý½á¹¹£¨¾ßÌåÊý¾Ý²ÎÕÕLCD¼¼ÊõÊֲᣩÈçÏ£º
#include <mach/fb.h> ......

[C/C++ Digestion] – ÖØÔØ²Ù×÷·û


[C/C++ Digestion] –
ÖØÔØ²Ù×÷·û
×÷Õߣº
Jason Lee @
http://blog.csdn.net/jasonblog
ÈÕÆÚ£º
2010-04-17
 
[1]
ÖØÔØ²Ù×÷·û
ÖØÔØ²Ù×÷·û´Ó´óµÄ·½ÃæÀ´½²¿ÉÒÔ·ÖΪÁ½Àࣺ×îºÃ»ò±ØÐë×÷ΪÀàµÄ³ÉÔ±º¯ÊýµÄ£¬ÒÔ¼°Ïà·´¡£¶ø¾ßÌ嵨½²£¬×îºÃ»ò±ØÐë×÷ΪÀàµÄ³ÉÔ±º¯ÊýµÄÓи³Öµ²Ù×÷·û
( = )
¡¢Ï±ê²Ù×÷·û
( [] ) ......

ǶÈëʽLinuxµÄ¼üÅÌÇý¶¯ 1£¨Í¨¹ýI2CʵÏÖ£©

CPU£ºs3c2410
OS£ºLinux Kernel 2.6.30.4
×î½ü¸Õ×öÍêµÄǶÈëʽ¼üÅ̵ÄÇý¶¯£¬ÓÉÓÚ³õ´Î½Ó´¥£¬×ܽáһϡ£
Ê×Ïȼòµ¥ËµËµÕâ¸ö¼üÅ̵ÄʵÏÖÔ­Àí£¬IIC×ÜÏß¹¤×÷Ô­Àíû±ØÒª·Ï»°£¬s3c2410µÄÊÖ²áÖн²µÄºÜÃ÷°×¡£Ó²¼þ·½ÃæÕâ¸ö¼üÅÌͨ¹ýÒ»¸öAVRµ¥Æ¬»ú£¨ATMEGA48£©½ÓÔÚIIC×ÜÏßÉÏ£¬Ò²¾ÍÊÇ˵£¬Ö±½ÓÓëIIC×ÜÏßÁ´½ÓµÄÉ豸²¢²»ÊÇÎÒÃÇÓõļüÅÌ£¬¶øÊÇ ......

C/C++ ³ÌÐòÉè¼ÆÔ±Ó¦Æ¸³£¼ûÃæÊÔÊÔÌâÉîÈëÆÊÎöÖ®¶þ

   3.ÄÚ¹¦Ìâ 
¡¡¡¡ÊÔÌâ1£º·Ö±ð¸ø³öBOOL£¬int£¬float£¬Ö¸Õë±äÁ¿ Óë“ÁãÖµ”±È½ÏµÄ if Óï¾ä£¨¼ÙÉè±äÁ¿ÃûΪvar£© 
¡¡¡¡½â´ð£º 
¡¡¡¡¡¡BOOLÐͱäÁ¿£ºif(!var) 
¡¡¡¡¡¡intÐͱäÁ¿£º if(var==0) 
¡¡¡¡¡¡floatÐͱäÁ¿£º 
¡¡¡¡¡¡const float EPSINON = 0.00001; 
¡¡¡¡¡ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ