C __attribute__ Ïê½â
< type="text/javascript">
ÔÎÄÇë¼ûÕâÀï
¡£
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µÄÌØÕ÷£¬Ëü¿ÉÒÔʹ±àÒëÆ÷¼ì²éº¯ÊýÉùÃ÷ºÍº¯Êýʵ¼Êµ÷ÓòÎÊýÖ®¼äµÄ¸ñʽ»¯×Ö·û´®ÊÇ·ñÆ¥Åä¡£¸Ã¹¦ÄÜÊ®·ÖÓÐÓã¬ÓÈÆäÊÇ´¦ÀíһЩºÜÄÑ·¢ÏÖµÄbug¡£
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(scanf,m,n)))
ÆäÖвÎÊýmÓënµÄº¬ÒåΪ£º
m£ºµÚ¼¸¸ö²ÎÊýΪ¸ñʽ»¯×Ö·û´®£¨format string£©£»
n£º²ÎÊý¼¯ºÏÖеĵÚÒ»¸ö£¬¼´²ÎÊý“…”ÀïµÄµÚÒ»¸ö²ÎÊýÔÚº¯Êý²ÎÊý×ÜÊýÅÅÔÚµÚ¼¸£¬×¢Ò⣬ÓÐʱº¯Êý²ÎÊýÀﻹÓГÒþÉ픵ÄÄØ£¬ºóÃæ»áÌáµ½£»
ÔÚʹÓÃÉÏ£¬__attribute__((format(printf,m,n)))Êdz£Óõ쬶øÁíÒ»ÖÖÈ´ºÜÉÙ¼ûµ½¡£ÏÂÃæ¾ÙÀý˵Ã÷£¬ÆäÖÐmyprintΪ×Ô¼º¶¨ÒåµÄÒ»¸ö´øÓпɱä²ÎÊýµÄº¯Êý£¬Æä¹¦ÄÜÀàËÆÓÚprintf£º
//m=1£»n=2
extern void myprint(const char *format,...) __attribute__((format(printf,1,2)));
//m=2£»n=3
extern void myprint(int l£
Ïà¹ØÎĵµ£º
AndroidÔÉú(Native)C¿ª·¢£º²é¿´±àÒëÆ÷Ô¤¶¨Òåºê
http://www.csharpwin.com/dotnetspace/4102r4305.shtml
AndroidÔÉú(Native)C¿ª·¢£º±àÒëÑ¡ÏîС½á
AndroidÔÉú(Native)C¿ª·¢Ö®Ê®£ºÓÃCode::BlocksÀ´¿ª·¢
AndroidÔÉú(Native)C¿ª·¢Ö®¾Å£ºOpenGL ES³õ̽
AndroidÔÉú(Native)C¿ª·¢Ö®°Ë£ºToolchain»·¾³´î½¨Æª
AndroidÔÉ ......
¼òÊöCºÍC++³ÌÐòԱѧϰÀú³Ì
ÊÕ²Ø
< type="text/javascript">
document.body.oncopy = function() {
if (window.clipboardData) {
setTimeout(function() {
......
C°æ±¾£º
vim stash.h
#ifndef STASH_H
#define STASH_H
typedef struct STASHTag {
int size; /* Size of each space */
int quantity; /* Number of storage spaces */
int next; /* Next empty space */
/* Dynamically allocated array of bytes: */
unsigned char* ......
ºÜÓвο¼ÒâÒåµÄѧÀúÁ÷³Ì¡£
¡¡¡¡1¡¢¿ÉÒÔ¿¼ÂÇÏÈѧϰC.
¡¡¡¡´ó¶àÊýʱºò£¬ÎÒÃÇѧϰÓïÑÔµÄÄ¿µÄ£¬²»ÊÇΪÁ˳ÉΪһ¸öÓïÑÔר¼Ò£¬¶øÊÇÏ£Íû³ÉΪһ¸ö½â¾öÎÊÌâµÄר¼Ò¡£×öÒ»¸öÓÐÓõijÌÐòÔ±£¬×öÒ»¸ö׬ǮµÄ³ÌÐòÔ±¡£ÎÒÃǵļÛÖµ£¬½«ÌåÏÖÔÚ¿Í»§¼ÛÖµÉÏ£¬¶ø²»ÊÇÓïÑÔдµÃºÃ²»ºÃ¿´¡£
¡¡¡¡C++ÊÇCµÄÒ»¸öÃæÏò¶ÔÏóµÄ½âÊÍ£¬C++ΪCÀ ......
È¥Äê ÎÒÃÇͨ¹ýÁ˼ÆËã»ú¶þ¼¶µÄ¿¼ºË£¬½ÓÏÂÀ´ÃæÁٵľÍÊÇÈý¼¶µÄ¿¼ÑéÁË£¬
ÓôÃÆµÄÊÇ ²»ÖªµÀÊÇÑ¡ÔñÄÄÖÖÓïÑԺã¡
Èý¼¶ÉÏ»ú ¹æ¶¨µÄÓïÑÔÊÇCÓïÑÔ£¬ÎÒѧµÄÊÇC++£¬ÀÏʦ˵£ºÕâ¶ÔÄãµÄÉÏ»ú¿¼ÊÔʱÓÐÓ°ÏìµÄ£¡
´Ó³¤Ô¶½Ç¶È¿´£ºC++±ÈCÓïÑÔÓÐןü¼Ó¹ãÀ«µÄǰ¾°£»¶øCÓïÑÔ¶ÔÓÚÉÏ»ú¿¼ÊÔ ºÃÈÝÒ×ÉÏÊÖ£¡
ÓôÃÆ¡£¡£¡£¡£¡£¡£ ......