2005-2006ѧÄêµÚ1ѧÆÚ
±à Òë Ô Àí
¿Î ³Ì Éè ¼Æ ±¨ ¸æ
°à¼¶ 02¼Æ(¶þ)
ѧºÅ 19
ÐÕÃû ÁõÏþÃ÷
³É¼¨
Ö¸µ¼½Ìʦ ¬³¯»Ô
Ò»¡¢ Éè¼ÆÄ¿µÄ
¼ÓÉî¶Ô±àÒëÔÀíµÄ½øÒ»²½ÈÏʶ£¬¼Óǿʵ¼ù¶¯ÊÖÄÜÁ¦ºÍ³ÌÐòµÄ¿ª·¢ÄÜÁ¦ÅàÑø£¬Ìá¸ß·ÖÎöÎÊÌâºÍ½â¾öÎÊÌâµÄÄÜÁ¦¡£
¶þ¡¢ Éè¼ÆÈÎÎñ
1.µ¥´Êʶ±ð
CÓïÑÔ³£Êý
CÓïÑÔ±êʶ·û
2.³ÌÐòµÄÎı¾´¦Àí
½«CÓïÑÔµÄËùÓÐ×¢ÊÍ×Öĸ´óд
½«CÓïÑÔµÄËùÓб£Áô×Ö´óд
3.µÝ¹éϽµ·ÖÎö
Èý¡¢ Éè¼Æ¹ý³Ì
1.×ÜÌåÉè¼Æ
ͨ¹ý¶ÁÈëCÓïÑÔÔ´ÎļþÖ®ºóÉú³ÉÏà¹ØµÄ´Ê·¨·ÖÎö£¬²¢Êä³ö³É¾¹ý´Ê·¨¼ÓÁÁµÄHTMLÎļþÓÃÓÚÏÔʾ¡£ÁíÍâÊä³öµ¥´Ê·ûºÅ±í¡£Éú³ÉµÄHTMLÎļþµÄÎļþÃûΪout.html£¬µ¥´Ê·ûºÅ±íÎļþΪtoken.txt¡£
ÔËÐз½·¨Îª£º½øÈëdistÎļþ¼ÐÔËÐÐmain *.c¡£ÕâÀïµÄ*Ìæ»»ÎªCÓïÑÔÎļþÃû£¬ºó׺ÃûΪC£¬µ«ÊÇÒ²¿ÉÒÔʹÓÃÆäËûºó׺Ãû¡£Ê¹ÓÃĬÈÏÉèÖÃµÄÆô¶¯ÇëÖ±½ÓË«»÷distĿ¼ÏÂrun.batÎļþ£¬Ä¬ÈÏ·ÖÎösample.cÎļþ¡£
³ÌÐò·ÖΪÈý¸öÄ£¿é£ºHTMLÄ£¿é¸ºÔðÌṩHTMLÎļþÉú³ÉÏà¹ØµÄϸ½Ú£»wordfixÄ£¿éÌṩ´Ê·¨·ÖÎöµÄ²½Ö裻 ......
2005-2006ѧÄêµÚ1ѧÆÚ
±à Òë Ô Àí
¿Î ³Ì Éè ¼Æ ±¨ ¸æ
°à¼¶ 02¼Æ(¶þ)
ѧºÅ 19
ÐÕÃû ÁõÏþÃ÷
³É¼¨
Ö¸µ¼½Ìʦ ¬³¯»Ô
Ò»¡¢ Éè¼ÆÄ¿µÄ
¼ÓÉî¶Ô±àÒëÔÀíµÄ½øÒ»²½ÈÏʶ£¬¼Óǿʵ¼ù¶¯ÊÖÄÜÁ¦ºÍ³ÌÐòµÄ¿ª·¢ÄÜÁ¦ÅàÑø£¬Ìá¸ß·ÖÎöÎÊÌâºÍ½â¾öÎÊÌâµÄÄÜÁ¦¡£
¶þ¡¢ Éè¼ÆÈÎÎñ
1.µ¥´Êʶ±ð
CÓïÑÔ³£Êý
CÓïÑÔ±êʶ·û
2.³ÌÐòµÄÎı¾´¦Àí
½«CÓïÑÔµÄËùÓÐ×¢ÊÍ×Öĸ´óд
½«CÓïÑÔµÄËùÓб£Áô×Ö´óд
3.µÝ¹éϽµ·ÖÎö
Èý¡¢ Éè¼Æ¹ý³Ì
1.×ÜÌåÉè¼Æ
ͨ¹ý¶ÁÈëCÓïÑÔÔ´ÎļþÖ®ºóÉú³ÉÏà¹ØµÄ´Ê·¨·ÖÎö£¬²¢Êä³ö³É¾¹ý´Ê·¨¼ÓÁÁµÄHTMLÎļþÓÃÓÚÏÔʾ¡£ÁíÍâÊä³öµ¥´Ê·ûºÅ±í¡£Éú³ÉµÄHTMLÎļþµÄÎļþÃûΪout.html£¬µ¥´Ê·ûºÅ±íÎļþΪtoken.txt¡£
ÔËÐз½·¨Îª£º½øÈëdistÎļþ¼ÐÔËÐÐmain *.c¡£ÕâÀïµÄ*Ìæ»»ÎªCÓïÑÔÎļþÃû£¬ºó׺ÃûΪC£¬µ«ÊÇÒ²¿ÉÒÔʹÓÃÆäËûºó׺Ãû¡£Ê¹ÓÃĬÈÏÉèÖÃµÄÆô¶¯ÇëÖ±½ÓË«»÷distĿ¼ÏÂrun.batÎļþ£¬Ä¬ÈÏ·ÖÎösample.cÎļþ¡£
³ÌÐò·ÖΪÈý¸öÄ£¿é£ºHTMLÄ£¿é¸ºÔðÌṩHTMLÎļþÉú³ÉÏà¹ØµÄϸ½Ú£»wordfixÄ£¿éÌṩ´Ê·¨·ÖÎöµÄ²½Ö裻 ......
Ò»°ãÔÚµ÷ÊÔ´òÓ¡DebugÐÅÏ¢µÄʱºò, ÐèÒª¿É±ä²ÎÊýµÄºê. ´ÓC99¿ªÊ¼¿ÉÒÔʹ±àÒëÆ÷±ê×¼Ö§³Ö¿É±ä²ÎÊýºê(variadic macros), ÁíÍâGCCÒ²Ö§³Ö¿É±ä²ÎÊýºê, µ«ÊÇÁ½ÖÖÔÚϸ½ÚÉÏ¿ÉÄÜ´æÔÚÇø±ð.
1. __VA_ARGS__
__VA_ARGS__ ½« "..." ´«µÝ¸øºê . Èç
#define debug(format, ...) fprintf(stderr, format, __VA_ARGS__)
2. GCCµÄ¸´ÔÓºê
GCCʹÓÃÒ»ÖÖ²»Í¬µÄÓï·¨,´Ó¶ø¿ÉÒÔ¸ø¿É±ä²ÎÊýÒ»¸öÃû×Ö,ÈçͬÆäËü²ÎÊýÒ»Ñù.
#define debug(format, args...) fprintf (stderr, format, args)
ÕâºÍµÚÒ»ÌõµÄºêÀý×ÓÊÇÍêȫһÑùµÄ,µ«ÊÇÕâôд¿É¶ÁÐÔ¸üÇ¿²¢ÇÒ¸üÈÝÒ×½øÐÐÃèÊö.
3. ##__VA_ARGS__
ÉÏÃæÁ½¸ö¶¨ÒåµÄºê,Èç¹û³öÏÖ debug("A Message")µÄʱºò,ÓÉÓÚºêÕ¹¿ªºóÓиö¶àÓàµÄ¶ººÅ,ËùÒÔ½«µ¼Ö±àÒë´íÎó.
ΪÁ˽â¾öÕâ¸öÎÊÌâ,CPP ʹÓÃÒ»¸öÌØÊâµÄ" ......
Ò»°ãÔÚµ÷ÊÔ´òÓ¡DebugÐÅÏ¢µÄʱºò, ÐèÒª¿É±ä²ÎÊýµÄºê. ´ÓC99¿ªÊ¼¿ÉÒÔʹ±àÒëÆ÷±ê×¼Ö§³Ö¿É±ä²ÎÊýºê(variadic macros), ÁíÍâGCCÒ²Ö§³Ö¿É±ä²ÎÊýºê, µ«ÊÇÁ½ÖÖÔÚϸ½ÚÉÏ¿ÉÄÜ´æÔÚÇø±ð.
1. __VA_ARGS__
__VA_ARGS__ ½« "..." ´«µÝ¸øºê . Èç
#define debug(format, ...) fprintf(stderr, format, __VA_ARGS__)
2. GCCµÄ¸´ÔÓºê
GCCʹÓÃÒ»ÖÖ²»Í¬µÄÓï·¨,´Ó¶ø¿ÉÒÔ¸ø¿É±ä²ÎÊýÒ»¸öÃû×Ö,ÈçͬÆäËü²ÎÊýÒ»Ñù.
#define debug(format, args...) fprintf (stderr, format, args)
ÕâºÍµÚÒ»ÌõµÄºêÀý×ÓÊÇÍêȫһÑùµÄ,µ«ÊÇÕâôд¿É¶ÁÐÔ¸üÇ¿²¢ÇÒ¸üÈÝÒ×½øÐÐÃèÊö.
3. ##__VA_ARGS__
ÉÏÃæÁ½¸ö¶¨ÒåµÄºê,Èç¹û³öÏÖ debug("A Message")µÄʱºò,ÓÉÓÚºêÕ¹¿ªºóÓиö¶àÓàµÄ¶ººÅ,ËùÒÔ½«µ¼Ö±àÒë´íÎó.
ΪÁ˽â¾öÕâ¸öÎÊÌâ,CPP ʹÓÃÒ»¸öÌØÊâµÄ" ......
ÓÐËÕæÕýµÄÀí½â¹ýÒ»¸ö±àÒëÆ÷ÄØ£¿Ðí¶àÈËÈÏΪTCºÜ¼òµ¥ºÜÂäºó£¬µ«ÊǼ´±ãÊÇÕâÑù¼òµ¥µÄ¹¤¾ß£¬µ½µ×Óм¸¸öÈËÕæÕýµÄÉîÈëÀí½âÁËÄØ£¿Ò»¸ö¼òµ¥µÄ±àÒëÆ÷¶¼²»ÄÜÀí½â£¬ÈçºÎÄܳÉΪ¸ßÊÖ£¬ÈçºÎÄÜÉîÈëµÄʹÓøü¼Ó¸ß¼¶µÄ¹¤¾ßÄØ£¿²»ÒªÒÔΪ×Ô¼ºÊ¹ÓõÄÊÇVC¾ÍºÜÁ˲»Æð£¬ÒòΪʹÓÃÕâÑùɵ¹Ï»¯µÄ¹¤¾ßÖ»ÄÜÈÃÄã¿´²»µ½ÊÂÎïµÄ±¾ÖÊ¡£½ÓÏÂÀ´ÎÒÃǾÍÀ´ÉîÈëµÄÈÏʶTurbo C±àÒëÆ÷¡£
¹ãÒåµÄ±àÒëÆ÷£¬°üÀ¨ÁË´úÂë±àÒëÆ÷(compiler)£¬Ä¿±êÎļþÁ´½ÓÆ÷(linker)£¬¿âÎļþ¹ÜÀí¹¤¾ß(ÈçtcµÄtlib£¬gccµÄar)£¬±àÒëÇý¶¯¹¤¾ß(ÈçVCµÄNMake£¬gccµÄmake)£¬ANSI c/c++±ê×¼µÄÍ·ÎļþºÍ¿âÎļþ£¬À©Õ¹µÄÍ·ÎļþºÍ¿âÎļþ£¬¼¯³É¿ª·¢»·¾³(IDE)£¬µÈµÈÓë±àÒëÏà¹ØµÄ¹¤¾ß£¬ËùÓÐÕâЩ¹¤¾ßµÄ¼¯ºÏ£¬¾Í×é³ÉÁ˹ãÒåÉϵıàÒëÆ÷¡£
ÏÁÒåµÄ±àÒëÆ÷£¬Ôò½öÖ¸compiler¡£compilerÖ»¸ºÔð½«Ô´´úÂ룬¼´.c/.cxx/.cppÎļþ±àÒë³ÉΪĿ±êÎļþ.o/.obj¡£±àÒë¹ý³ÌµÄÊäÈëÊÇÔ´Îļþ£¬°üÀ¨×Ô¼ºÊéдµÄ.cºÍ.hÒÔ¼°ÏµÍ³ÌṩµÄ.hÎļþ£¬±àÒëµÄÊä³öÊÇÄ¿±êÎļþ¡£ÐèҪǿµ÷µÄÒ»µãʱ£¬ÔÚcompile½×¶Î£¬Ö»´¦ÀíÔ´Îļþ£¬ËùÒÔ²»ÐèÒª¿âÎļþºÍ¶îÍâµÄÄ¿±êÎļþµÄ²ÎÓ룬Òò´Ë£¬Ö»Òª´úÂëÔÚÓï·¨ÉÏûÓдíÎó£¬compile¾ÍÒ»¶¨ÄܲúÉúÄ¿±êÎļþ¡£
¶ÔÓÚÒ»¸ö¹ãÒåµÄ±àÒëÆ÷À´ËµÒÔϼ¸¸ö²¿·ÖÊDZر¸µÄ£º1.compiler£¬2.link ......
C/C++ÖÐStaticµÄ×÷ÓÃÏêÊö
Ò».ÔÚCÓïÑÔÖУ¬staticµÄ×ÖÃæÒâ˼ºÜÈÝÒ×°ÑÎÒÃǵ¼ÈëÆç;£¬ÆäʵËüµÄ×÷ÓÃÓÐÈýÌõ¡£
£¨1£©ÏÈÀ´½éÉÜËüµÄµÚÒ»ÌõÒ²ÊÇ×îÖØÒªµÄÒ»Ìõ£ºÒþ²Ø¡£
µ±ÎÒÃÇͬʱ±àÒë¶à¸öÎļþʱ£¬ËùÓÐδ¼Óstaticǰ׺µÄÈ«¾Ö±äÁ¿ºÍº¯Êý¶¼¾ßÓÐÈ«¾Ö¿É¼ûÐÔ¡£ÎªÀí½âÕâ¾ä»°£¬ÎÒ¾ÙÀýÀ´ËµÃ÷¡£ÎÒÃÇҪͬʱ±àÒëÁ½¸öÔ´Îļþ£¬Ò»¸öÊÇa.c£¬ÁíÒ»¸öÊÇmain.c¡£
ÏÂÃæÊÇa.cµÄÄÚÈÝ
char a = 'A'; // global variable
void msg()
{
printf("Hello\n");
}
ÏÂÃæÊÇmain.cµÄÄÚÈÝ
int main(void)
{
extern char a; // extern variable must be declared before use
printf("%c ", a);
(void)msg();
return 0;
}
³ÌÐòµÄÔËÐнá¹ûÊÇ£º
A Hello
Äã¿ÉÄÜ»áÎÊ£ºÎªÊ²Ã´ÔÚa.cÖж¨ÒåµÄÈ«¾Ö±äÁ¿aºÍº¯ÊýmsgÄÜÔÚmain.cÖÐʹÓã¿Ç°ÃæËµ¹ý£¬ËùÓÐδ¼Óstaticǰ׺µÄÈ«¾Ö±äÁ¿ºÍº¯Êý¶¼¾ßÓÐÈ«¾Ö¿É¼ûÐÔ£¬ÆäËüµÄÔ´ÎļþÒ²ÄÜ·ÃÎÊ¡£´ËÀýÖУ¬aÊÇÈ«¾Ö±äÁ¿£¬msgÊǺ¯Êý£¬²¢ÇÒ¶¼Ã»ÓмÓstaticǰ׺£¬Òò´Ë¶ÔÓÚÁíÍâµÄÔ´Îļþmain.cÊǿɼûµÄ¡£
Èç¹û¼ÓÁËstatic£¬¾Í»á¶ÔÆäËüÔ´ÎļþÒþ²Ø¡£ÀýÈçÔÚaºÍmsgµÄ¶¨Òåǰ¼ÓÉÏstatic£¬main.c¾Í¿´²»µ½ËüÃÇÁË¡£ÀûÓÃÕâÒ»ÌØÐÔ¿ÉÒÔÔÚ²»Í¬µÄÎļþÖж¨ÒåͬÃûº¯ÊýºÍͬÃû±äÁ¿£¬¶ø²»±Øµ£ÐÄÃüÃû³åÍ»¡£Static¿ÉÒÔÓÃ× ......
C/C++ÖÐStaticµÄ×÷ÓÃÏêÊö
Ò».ÔÚCÓïÑÔÖУ¬staticµÄ×ÖÃæÒâ˼ºÜÈÝÒ×°ÑÎÒÃǵ¼ÈëÆç;£¬ÆäʵËüµÄ×÷ÓÃÓÐÈýÌõ¡£
£¨1£©ÏÈÀ´½éÉÜËüµÄµÚÒ»ÌõÒ²ÊÇ×îÖØÒªµÄÒ»Ìõ£ºÒþ²Ø¡£
µ±ÎÒÃÇͬʱ±àÒë¶à¸öÎļþʱ£¬ËùÓÐδ¼Óstaticǰ׺µÄÈ«¾Ö±äÁ¿ºÍº¯Êý¶¼¾ßÓÐÈ«¾Ö¿É¼ûÐÔ¡£ÎªÀí½âÕâ¾ä»°£¬ÎÒ¾ÙÀýÀ´ËµÃ÷¡£ÎÒÃÇҪͬʱ±àÒëÁ½¸öÔ´Îļþ£¬Ò»¸öÊÇa.c£¬ÁíÒ»¸öÊÇmain.c¡£
ÏÂÃæÊÇa.cµÄÄÚÈÝ
char a = 'A'; // global variable
void msg()
{
printf("Hello\n");
}
ÏÂÃæÊÇmain.cµÄÄÚÈÝ
int main(void)
{
extern char a; // extern variable must be declared before use
printf("%c ", a);
(void)msg();
return 0;
}
³ÌÐòµÄÔËÐнá¹ûÊÇ£º
A Hello
Äã¿ÉÄÜ»áÎÊ£ºÎªÊ²Ã´ÔÚa.cÖж¨ÒåµÄÈ«¾Ö±äÁ¿aºÍº¯ÊýmsgÄÜÔÚmain.cÖÐʹÓã¿Ç°ÃæËµ¹ý£¬ËùÓÐδ¼Óstaticǰ׺µÄÈ«¾Ö±äÁ¿ºÍº¯Êý¶¼¾ßÓÐÈ«¾Ö¿É¼ûÐÔ£¬ÆäËüµÄÔ´ÎļþÒ²ÄÜ·ÃÎÊ¡£´ËÀýÖУ¬aÊÇÈ«¾Ö±äÁ¿£¬msgÊǺ¯Êý£¬²¢ÇÒ¶¼Ã»ÓмÓstaticǰ׺£¬Òò´Ë¶ÔÓÚÁíÍâµÄÔ´Îļþmain.cÊǿɼûµÄ¡£
Èç¹û¼ÓÁËstatic£¬¾Í»á¶ÔÆäËüÔ´ÎļþÒþ²Ø¡£ÀýÈçÔÚaºÍmsgµÄ¶¨Òåǰ¼ÓÉÏstatic£¬main.c¾Í¿´²»µ½ËüÃÇÁË¡£ÀûÓÃÕâÒ»ÌØÐÔ¿ÉÒÔÔÚ²»Í¬µÄÎļþÖж¨ÒåͬÃûº¯ÊýºÍͬÃû±äÁ¿£¬¶ø²»±Øµ£ÐÄÃüÃû³åÍ»¡£Static¿ÉÒÔÓÃ× ......
C#£¨C sharp£©×Ö·û´®ºÍʱ¼äµÄÏ໥ת»»¡£
Ò»¡¢DateTime –> string
ʱ¼äÀàÐÍת»¯³É×Ö·û´®ÀàÐÍ£¬ÄÇÊÇÏ൱µÄ¼òµ¥£¬Ö±½Óµ÷ÓÃToString()·½·¨¼´¿É¡£È磺
DateTime dt = DateTime.Now;
string dtStr = dt.ToString();
Èç¹ûÏë¶ÔÊä³ö¸ñʽ»¯£¬¿ÉÒÔÕâôд£º
dt.ToString("yyyyÄêMMÔÂddÈÕ"); //2005Äê11ÔÂ5ÈÕ
dt.ToString("yyyy-MM-dd"); //2005-11-5
string.Format("{0:d}",dt); //2005-11-5
string.Format("{0:D}",dt); //2005Äê11ÔÂ5ÈÕ
ʱ¼äÀàÐ͸ñʽ»¯£¨³É×Ö·ûÀàÐÍ£©¿ÉÒÔͨ¹ýÁ½ÖÖ·½Ê½£º1¡¢×Ô¶¨Òåʱ¼ä¸ñʽ¡£×Ô¼º¶¨Òåʱ¼äµÄ¹¹³ÉºÍ±íʾ£»2¡¢±ê׼ʱ¼ä¸ñʽ¡£Óɱê×¼¿âÌṩµÄÓÐÏ޵ıíʾ·½Ê½¡££¨ÏêϸµÄÇé²Î¿¼ÁÐ±í£©
¶þ¡¢string -> DateT ......
C#£¨C sharp£©×Ö·û´®ºÍʱ¼äµÄÏ໥ת»»¡£
Ò»¡¢DateTime –> string
ʱ¼äÀàÐÍת»¯³É×Ö·û´®ÀàÐÍ£¬ÄÇÊÇÏ൱µÄ¼òµ¥£¬Ö±½Óµ÷ÓÃToString()·½·¨¼´¿É¡£È磺
DateTime dt = DateTime.Now;
string dtStr = dt.ToString();
Èç¹ûÏë¶ÔÊä³ö¸ñʽ»¯£¬¿ÉÒÔÕâôд£º
dt.ToString("yyyyÄêMMÔÂddÈÕ"); //2005Äê11ÔÂ5ÈÕ
dt.ToString("yyyy-MM-dd"); //2005-11-5
string.Format("{0:d}",dt); //2005-11-5
string.Format("{0:D}",dt); //2005Äê11ÔÂ5ÈÕ
ʱ¼äÀàÐ͸ñʽ»¯£¨³É×Ö·ûÀàÐÍ£©¿ÉÒÔͨ¹ýÁ½ÖÖ·½Ê½£º1¡¢×Ô¶¨Òåʱ¼ä¸ñʽ¡£×Ô¼º¶¨Òåʱ¼äµÄ¹¹³ÉºÍ±íʾ£»2¡¢±ê׼ʱ¼ä¸ñʽ¡£Óɱê×¼¿âÌṩµÄÓÐÏ޵ıíʾ·½Ê½¡££¨ÏêϸµÄÇé²Î¿¼ÁÐ±í£©
¶þ¡¢string -> DateT ......
(ת)C/C++ ºêÏê½â ÊÕ²Ø
ÖÚ¶àC++Êé¼®¶¼ÖÒ¸æÎÒÃÇCÓïÑÔºêÊÇÍò¶ñÖ®Ê×£¬µ«ÊÂÇé×ܲ»ÈçÎÒÃÇÏëÏóµÄÄÇô»µ£¬¾ÍÈçͬgotoÒ»Ñù¡£ºêÓÐ
Ò»¸öºÜ´óµÄ×÷Ó㬾ÍÊÇ×Ô¶¯ÎªÎÒÃDzúÉú´úÂë¡£Èç¹û˵ģ°å¿ÉÒÔΪÎÒÃDzúÉú¸÷ÖÖÐͱðµÄ´úÂë(ÐͱðÌæ»»)£¬
ÄÇôºêÆäʵ¿ÉÒÔΪÎÒÃÇÔÚ·ûºÅÉϲúÉúеĴúÂë(¼´·ûºÅÌæ»»¡¢Ôö¼Ó)¡£
¹ØÓÚºêµÄһЩÓï·¨ÎÊÌ⣬¿ÉÒÔÔÚgoogleÉÏÕÒµ½¡£ÏàÐÅÎÒ£¬Äã¶ÔÓÚºêµÄÁË½â¾ø¶ÔûÄãÏëÏóµÄÄÇô¶à¡£Èç¹ûÄã
»¹²»ÖªµÀ#ºÍ##£¬Ò²²»ÖªµÀprescan£¬ÄÇôÄã¿Ï¶¨¶ÔºêµÄÁ˽ⲻ¹»¡£
ÎÒÉÔ΢½²½âϺêµÄһЩÓï·¨ÎÊÌâ(˵Óï·¨ÎÊÌâËÆºõ²»Í×£¬macroÖ»ÓëpreprocessorÓйأ¬¸úÓïÒå·ÖÎöÓÖÎÞ¹Ø)£º
1. ºê¿ÉÒÔÏñº¯ÊýÒ»Ñù±»¶¨Ò壬ÀýÈ磺
#define min(x,y) (x µ«ÊÇÔÚʵ¼ÊʹÓÃʱ£¬Ö»Óе±Ð´ÉÏmin()£¬±ØÐë¼ÓÀ¨ºÅ£¬min²Å»á±»×÷ΪºêÕ¹¿ª£¬·ñÔò²»×öÈκδ¦Àí¡£
2. Èç¹ûºêÐèÒª²ÎÊý£¬Äã¿ÉÒÔ²»´«£¬±àÒëÆ÷»á¸øÄ㾯¸æ(ºê²ÎÊý²»¹»)£¬µ«ÊÇÕâ»áµ¼Ö´íÎó¡£ÈçC++Êé¼®ÖÐËùÃè
ÊöµÄ£¬±àÒëÆ÷(Ô¤´¦ÀíÆ÷)¶ÔºêµÄÓï·¨¼ì²é²»¹»£¬ËùÒÔ¸ü¶àµÄ¼ì²éÐÔ¹¤×÷µÃÄã×Ô¼ºÀ´×ö¡£
3. ºÜ¶à³ÌÐòÔ±²»ÖªµÀµÄ#ºÍ##
#·ûºÅ°ÑÒ»¸ö·ûºÅÖ±½Óת»»Îª×Ö·û´®£¬ÀýÈ磺
#define STRING(x) #x
const char *str = STRING( test_string ); strµÄÄÚÈݾÍÊÇ"test_strin ......
(ת)C/C++ ºêÏê½â ÊÕ²Ø
ÖÚ¶àC++Êé¼®¶¼ÖÒ¸æÎÒÃÇCÓïÑÔºêÊÇÍò¶ñÖ®Ê×£¬µ«ÊÂÇé×ܲ»ÈçÎÒÃÇÏëÏóµÄÄÇô»µ£¬¾ÍÈçͬgotoÒ»Ñù¡£ºêÓÐ
Ò»¸öºÜ´óµÄ×÷Ó㬾ÍÊÇ×Ô¶¯ÎªÎÒÃDzúÉú´úÂë¡£Èç¹û˵ģ°å¿ÉÒÔΪÎÒÃDzúÉú¸÷ÖÖÐͱðµÄ´úÂë(ÐͱðÌæ»»)£¬
ÄÇôºêÆäʵ¿ÉÒÔΪÎÒÃÇÔÚ·ûºÅÉϲúÉúеĴúÂë(¼´·ûºÅÌæ»»¡¢Ôö¼Ó)¡£
¹ØÓÚºêµÄһЩÓï·¨ÎÊÌ⣬¿ÉÒÔÔÚgoogleÉÏÕÒµ½¡£ÏàÐÅÎÒ£¬Äã¶ÔÓÚºêµÄÁË½â¾ø¶ÔûÄãÏëÏóµÄÄÇô¶à¡£Èç¹ûÄã
»¹²»ÖªµÀ#ºÍ##£¬Ò²²»ÖªµÀprescan£¬ÄÇôÄã¿Ï¶¨¶ÔºêµÄÁ˽ⲻ¹»¡£
ÎÒÉÔ΢½²½âϺêµÄһЩÓï·¨ÎÊÌâ(˵Óï·¨ÎÊÌâËÆºõ²»Í×£¬macroÖ»ÓëpreprocessorÓйأ¬¸úÓïÒå·ÖÎöÓÖÎÞ¹Ø)£º
1. ºê¿ÉÒÔÏñº¯ÊýÒ»Ñù±»¶¨Ò壬ÀýÈ磺
#define min(x,y) (x µ«ÊÇÔÚʵ¼ÊʹÓÃʱ£¬Ö»Óе±Ð´ÉÏmin()£¬±ØÐë¼ÓÀ¨ºÅ£¬min²Å»á±»×÷ΪºêÕ¹¿ª£¬·ñÔò²»×öÈκδ¦Àí¡£
2. Èç¹ûºêÐèÒª²ÎÊý£¬Äã¿ÉÒÔ²»´«£¬±àÒëÆ÷»á¸øÄ㾯¸æ(ºê²ÎÊý²»¹»)£¬µ«ÊÇÕâ»áµ¼Ö´íÎó¡£ÈçC++Êé¼®ÖÐËùÃè
ÊöµÄ£¬±àÒëÆ÷(Ô¤´¦ÀíÆ÷)¶ÔºêµÄÓï·¨¼ì²é²»¹»£¬ËùÒÔ¸ü¶àµÄ¼ì²éÐÔ¹¤×÷µÃÄã×Ô¼ºÀ´×ö¡£
3. ºÜ¶à³ÌÐòÔ±²»ÖªµÀµÄ#ºÍ##
#·ûºÅ°ÑÒ»¸ö·ûºÅÖ±½Óת»»Îª×Ö·û´®£¬ÀýÈ磺
#define STRING(x) #x
const char *str = STRING( test_string ); strµÄÄÚÈݾÍÊÇ"test_strin ......