c ºê¶¨Òå
¹ØÓÚ#ºÍ##ÔÚCÓïÑԵĺêÖУ¬#µÄ¹¦ÄÜÊǽ«ÆäºóÃæµÄºê²ÎÊý½øÐÐ×Ö·û´®»¯²Ù×÷£¨Stringfication£©£¬¼òµ¥Ëµ¾ÍÊÇÔÚ¶ÔËüËùÒýÓõĺê±äÁ¿Í¨¹ýÌæ»»ºóÔÚÆä×óÓÒ¸÷¼ÓÉÏÒ»¸öË«ÒýºÅ¡£±ÈÈçÏÂÃæ´úÂëÖеĺ꣺
#define WARN_IF(EXP) \
do{ if (EXP) \
fprintf(stderr, "Warning: " #EXP "\n"); } \
while(0)
ÄÇôʵ¼ÊʹÓÃÖлá³öÏÖÏÂÃæËùʾµÄÌæ»»¹ý³Ì£º
WARN_IF (divider == 0);
±»Ì滻Ϊ
do {
if (divider == 0)
fprintf(stderr, "Warning" "divider == 0" "\n");
} while(0);
ÕâÑùÿ´Îdivider£¨³ýÊý£©Îª0µÄʱºò±ã»áÔÚ±ê×¼´íÎóÁ÷ÉÏÊä³öÒ»¸öÌáʾÐÅÏ¢¡£
¶ø##±»³ÆÎªÁ¬½Ó·û£¨concatenator£©£¬ÓÃÀ´½«Á½¸öTokenÁ¬½ÓΪһ¸öToken¡£×¢ÒâÕâÀïÁ¬½ÓµÄ¶ÔÏóÊÇToken¾ÍÐУ¬¶ø²»Ò»¶¨ÊǺêµÄ±äÁ¿¡£±ÈÈçÄãÒª×öÒ»¸ö²Ëµ¥ÏîÃüÁîÃûºÍº¯ÊýÖ¸Õë×é³ÉµÄ½á¹¹ÌåµÄÊý×飬²¢ÇÒÏ£ÍûÔÚº¯ÊýÃûºÍ²Ëµ¥ÏîÃüÁîÃûÖ®¼äÓÐÖ±¹ÛµÄ¡¢Ãû×ÖÉϵĹØÏµ¡£ÄÇôÏÂÃæµÄ´úÂë¾Í·Ç³£ÊµÓãº
struct command
{
char * name;
void (*function) (void);
};
#define COMMAND(NAME) { NAME, NAME ## _command }
// È»ºóÄã¾ÍÓÃһЩԤÏȶ¨ÒåºÃµÄÃüÁîÀ´·½±ãµÄ³õʼ»¯Ò»¸öcommand½á¹¹µÄÊý×éÁË£º
struct command commands[] = {
COMMAND(quit),
COMMAND(help),
...
}
COMMANDºêÔÚÕâÀï³äµ±Ò»¸ö´úÂëÉú³ÉÆ÷µÄ×÷Óã¬ÕâÑù¿ÉÒÔÔÚÒ»¶¨³Ì¶ÈÉϼõÉÙ´úÂëÃܶȣ¬¼ä½ÓµØÒ²¿ÉÒÔ¼õÉÙ²»ÁôÐÄËùÔì³ÉµÄ´íÎó¡£ÎÒÃÇ»¹¿ÉÒÔn¸ö##·ûºÅÁ¬½Ó n+1¸öToken£¬Õâ¸öÌØÐÔÒ²ÊÇ#·ûºÅËù²»¾ß±¸µÄ¡£±ÈÈ磺
#define LINK_MULTIPLE(a,b,c,d) a##_##b##_##c##_##d
typedef struct _record_type LINK_MULTIPLE(name,company,position,salary);
// ÕâÀïÕâ¸öÓï¾ä½«Õ¹¿ªÎª£º
// typedef struct _record_type name_company_position_salary;
¹ØÓÚ...µÄʹÓÃ
...ÔÚCºêÖгÆÎªVariadic Macro£¬Ò²¾ÍÊDZä²Îºê¡£±ÈÈ磺
#define myprintf(templt,...) fprintf(stderr,templt,__VA_ARGS__)
// »òÕß
#define myprintf(templt,args...) fprintf(stderr,templt,args)
µÚÒ»¸öºêÖÐÓÉÓÚûÓжԱä²ÎÆðÃû£¬ÎÒÃÇÓÃĬÈϵĺê__VA_ARGS__À´Ìæ´úËü¡£µÚ¶þ¸öºêÖУ¬ÎÒÃÇÏÔʽµØÃüÃû±ä²ÎΪargs£¬ÄÇôÎÒÃÇÔں궨ÒåÖоͿÉÒÔÓÃargsÀ´´úÖ¸±ä²ÎÁË¡£Í¬CÓïÑÔµÄstd
Ïà¹ØÎĵµ£º
ÍøÉÏÒ»µÀ½ðɽµÄÃæÊÔÌ⣺
http://topic.csdn.net/u/20100524/14/0eff992a-2849-4db6-bdaa-d4a200e79b7c.html
Çë·Ö±ðÓÃC++µÄÃæÏò¶ÔÏóºÍ·ºÐÍ»úÖÆ£¬±àдʵÏÖTemplate MethodģʽµÄʾÀý´úÂ룬²¢±È½ÏÁ½ÖÖ·½Ê½¸÷×ÔµÄÓÅȱµã¡£
ÓÃÐ麯ÊýʵÏÖTemplate MethodµÄ·½Ê½¾Í²»¶à˵ÁË¡£Ó÷ºÐ͵ķ½Ê½ÊµÏÖ¶à̬ÔÚATLÀïÃæÓдóÁ¿µÄÓõ½£¡
·ºÐ͵ ......
Ò» Ê×ÏÈ×ܽáÒ»ÏÂSD¿¨µÄдÎļþ£¬Ðè×¢ÒâµÄÊÂÏîÈçÏ£º
1. FAT16 дµÄʱºò±ØÐëÖÁÉÙдһ¸öÉÈÇø¡£
2. FAT±í²»ÄÜÆµ·±µÄ¶Áд£¬·ñÔò»á³ö´í¡£ÉêÇëеÄÒ»¸ö´ØÊ±£¬Ö±½ÓÔÚÕâ¸ö´ØÀïÃæ£¨¼´ÏÂÒ»´ØºÅ£©µÄдΪ0XFFFF¡£
3. FATËÆºõ±ØÐëת»¯³Éu16²ÅÄÜд¡£Ã²ËÆÊÇÕâÑù£¬¾ßÌåû×Ðϸ¿´¡£
4. »ñȡеÄË÷Òý´ØµÄʱºò£¬Ö±½Ó´Ó¾ÉµÄË÷Òý´ØµÄºóÃæ ......
CºÍC++ÖеÄÖ÷ÒªÊý¾ÝÀàÐͺÍ×Ö½Ú´óС(
C/C++µÄд·¨ÊDz»¿ÆÑ§ºÍ²»ÑϽ÷µÄ¡£ÒòΪCºÍC++ËäÈ»ÓïÒ壬µ«ÊÇÉè¼ÆË¼ÏëÊǽṹ»¯ÓëÃæÏò¶ÔÏó. C±ê×¼¹æ·¶ÓëC++µÄ±ê×¼¹æ·¶Ò²ÊÇÁ½¸öÎı¾¡£½üÀ´×ÐϸÑо¿ÁËËüÃǵÄÊý¾ÝÀàÐÍ£¬²ÅÖªµÀÆäÀ´ÁúÈ¥Âö£¬ÕæÕý×öµ½ÆäʵËùÒÔÈ»¡£
1¡¢CÓïÑÔ¶¨ÒåÁË5ÖÖ»ù±¾Êý¾ÝÀàÐÍ
char(×Ö·û), int(Õ ......
ÔÚ×öSDLÖÁAndroidµÄÒÆÖ²Ê±£¬¼üÅÌʼþÊÇÄÜÕý³£²¶»ñµ½£¬¿´ÁËSLDµÄÔ´Â룬·¢ÏÖÓõÄdeviceÊÇ /dev/tty0£¬µ«ÊÇÊó±ê½ÐÊDz»Äܳɹ¦²¶»ñ£¬×ÜÊǵõ½ 0£¬ÔËÐÐÃüÁî²é¿´devicesʱ£¬ÏÔʾÈçÏ£º
# cat /proc/bus/input/devices
cat /proc/bus/input/devices
I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="qwerty ......
/*
**ÅжÏC?ÐÐ??¾³µÄ³ÌÐò
*/
/*
**¾²?³õʼ»¯
*/
int static_variable=5;
void
f()
{
register int i1, i2, i3, i4, i5, i6, i7, i8, i9, i10;
register char *c1, *c2, *c3, *c4, *c5, *c6, *c7 , *c8, *c9, *c10;
extern int a_very_long_name_to_sec_how_long_they_can_be;
double ......