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

ʹÓà gperf ʵÏÖ¸ßЧµÄ C/C++ ÃüÁîÐд¦Àí


ʹÓà gperf ʵÏÖ¸ßЧµÄ C/C++ ÃüÁîÐд¦Àí
GNU ÍêÃÀ£¨gperf£©É¢Áк¯ÊýÉú³ÉÆ÷¼ò»¯¸´ÔÓµÄÊäÈë×Ö·û´®
ÎĵµÑ¡Ïî
¼¶±ð£º Öм¶
Arpan Sen
(arpan@syncad.com
), ¼¼ÊõÖ÷¹Ü, Synapti Computer Aided Design Pvt Ltd
2007 Äê 9 ÔÂ 10 ÈÕ
GNU µÄ gperf ¹¤¾ßÊÇÒ»ÖÖ “ÍêÃÀµÄ” É¢Áк¯Êý£¬¿ÉÒÔΪÓû§ÌṩµÄÒ»×éÌØ¶¨×Ö·û´®Éú³ÉÉ¢ÁÐ±í¡¢É¢Áк¯ÊýºÍ²éÕÒº¯ÊýµÄ C/C++ ´úÂ롣ͨ¹ý±¾ÎÄѧϰÈçºÎʹÓà gperf ʵÏÖ C/C++ ´úÂëÖиßЧµÄÃüÁîÐд¦Àí¡£
ÃüÁîÐд¦ÀíºÍ gperf µÄ×÷ÓÃ
ÃüÁîÐд¦ÀíÒ»Ö±ÒÔÀ´¶¼ÊÇÈí¼þ¿ª·¢ÖÐ×îÈÝÒ×±»ºöÊÓµÄÁìÓò¡£¼¸ºõËùÓбȽϸ´ÔÓµÄÈí¼þ¶¼¾ßÓÐһЩ¿ÉÓõÄÃüÁîÐÐÑ¡Ïî¡£ÊÂʵÉÏ£¬´óÁ¿ if-else
Óï¾ä¾­³£±»ÓÃÀ´´¦ÀíÓû§ÊäÈ룬Òò´Ëά»¤ÕâÖÖÒÅÁô´úÂëÏ൱·Ñʱ£¬¶Ô×ÊÉî³ÌÐòÔ±ÒàÊÇÈç´Ë¡£ÕâÖÖÇéÐÎÏ£¬ºÜ¶à C ¿ª·¢ÈËԱͨ³£Ê¹ÓÃÈß³¤£¨Í¨³£¶¼Ç¶Ì×ʹÓã©µÄ if-else
Óï¾ä£¬ÒÔ¼° ANSI C ¿âº¯Êý£¬ÀýÈç strcmp
¡¢strcasecmp
ºÍ strtok
×÷Ϊ²¹³ä£¬ÈçÇåµ¥ 1 Ëùʾ¡£

Çåµ¥ 1. C ÓïÑÔÑùʽµÄÃüÁîÐд¦Àí

if (strtok(cmdstring, "+dumpdirectory"))
{
// code for printing help messages goes here
}
else if (strtok(cmdstring, "+dumpfile"))
{
// code for printing version info goes here
}
C++ ¿ª·¢ÈËÔ±²¢Ã»ÓÐʹÓûùÓÚ ANSI C µÄÓ¦ÓóÌÐò±à³Ì½Ó¿Ú£¬¶øÊÇʹÓñê׼ģ°å¿â£¨Standard Template Library£¬STL£©ÖеÄ×Ö·û´®¡£¾¡¹ÜÈç´Ë£¬ÈÔÈ»ÎÞ·¨±ÜÃâʹÓÃǶÌ×µÄ if-else
ÐòÁÐÓï¾ä¡£ºÜÃ÷ÏÔ£¬Ëæ×ÅÃüÁîÐÐÑ¡Ïî²»¶ÏÔö¼Ó£¬ÕâÖÖ·½·¨È±·¦¿ÉÉìËõÐÔ¡£¶ÔÓÚ¾ßÓÐ N ¸öÑ¡ÏîµÄµäÐͳÌÐòµ÷Ó㬴úÂë×îÖÕÖ´ÐÐ 0£¨N2
£©±È½Ï¡£ÎªÁËÉú³ÉÔËÐиü¼Ó¿ì½Ý²¢Ò×ÓÚά»¤µÄ´úÂ룬ʹÓÃÉ¢ÁÐ±í´æ´¢ÃüÁîÐÐÑ¡ÏʹÓÃÉ¢ÁÐÑéÖ¤Óû§Ö¸¶¨µÄÊäÈ룬ÕâÖÖ·½·¨·Ç³£ÓаïÖú¡£
Õâ¾ÍÊÇ gperf °çÑݵĽÇÉ«¡£Ëü½«´ÓÔ¤¶¨µÄÓÐЧÃüÁîÐÐÑ¡ÏîÁбíºÍʱ¼ä¸´ÔÓ¶ÈΪ O(1) µÄ²éÕÒº¯ÊýÖÐÉú³ÉÒ»¸öÉ¢ÁÐ±í¡£Òò´Ë£¬¶ÔÓÚ¾ßÓÐ N ¸öÑ¡ÏîµÄµäÐͳÌÐòµ÷Ó㬴úÂëÖ»ÐèÖ´ÐÐ O(N) [N*O(1)]
±È½Ï — ÕâÊǶÔÒÅÁô´úÂëµÄ¾Þ´ó¸Ä½ø¡£
 
Gperf ʹÓÃģʽ
Gperf ½«´ÓÓû§ÌṩµÄÎļþÖУ¨Í¨³£Ê¹Óà .gperf ×÷ΪÀ©Õ¹Ãû£¬µ«²»×öÇ¿ÖÆÒªÇ󣩗 ÀýÈ磬commandoptions.gperf — ²¢Õë¶ÔÉ¢ÁÐ±í¡¢É¢ÁкͲéÕÒ·½·¨Éú³É C/C++ Ô´´úÂë¡£ËùÓдúÂë±»¶¨Ïòµ½±ê×¼Êä³ö£¬È»ºó±ØÐëÖØ¶¨Ïòµ½ÀàËÆÏÂÃæµÄÎļþ£º
gperf -L C++ command_line_options.gperf > p


Ïà¹ØÎĵµ£º

C/C++Ó﷨֪ʶ£ºtypedef struct Ó÷¨Ïê½â

µÚһƪ£ºtypedef structÓëstructµÄÇø±ð
1. »ù±¾½âÊÍ
typedefΪCÓïÑԵĹؼü×Ö£¬×÷ÓÃÊÇΪһÖÖÊý¾ÝÀàÐͶ¨ÒåÒ»¸öÐÂÃû×Ö¡£ÕâÀïµÄÊý¾ÝÀàÐͰüÀ¨ÄÚ²¿Êý¾ÝÀàÐÍ£¨int,charµÈ£©ºÍ×Ô¶¨ÒåµÄÊý¾ÝÀàÐÍ
£¨structµÈ£©¡£
ÔÚ±à³ÌÖÐʹÓÃtypedefÄ¿µÄÒ»°ãÓÐÁ½¸ö£¬Ò»¸öÊǸø±äÁ¿Ò»¸öÒ×¼ÇÇÒÒâÒåÃ÷È·µÄÐÂÃû×Ö£¬ÁíÒ»¸öÊǼò»¯Ò»Ð©±È½Ï¸´ÔÓµÄÀàÐÍÉùÃ÷ ......

LinuxÄÚºËÈëÃÅ£¨Èý£©—— CÓïÑÔ»ù±¾¹¦

    linuxÊÇÒ»¸ö¸´ÔÓµÄÈí¼þϵͳ£¬ÆäÄÚºËÔ´´úÂëÍùÍù»áÓõ½Ò»Ð©ÔÚÓ¦ÓóÌÐòÉè¼ÆÖв¿³£¼ûÓïÑԳɷֺͱà³Ì¼¼ÇÉ£¬ÕâЩ¶¼ÊÇ·ÖÎöÄÚºËÔ´´úÂëµÄ»ù±¾¹¦£¬Ï£Íû´ó¼ÒÄÜÖØµãÕÆÎÕ¡£
    Ê×ÏÈ£¬gcc±àÒëÆ÷´ÓÓïÑÔÀïÎüÊÕÁË“inline”ºÍ“const”¡£inlineº¯ÊýµÄ´óÁ¿Ê¹Óã¬ÓÐÀûÓÚÌá¸ßÔËÐ ......

javaʹÓÃJNIµ÷ÓÃC++º¯Êý

ÍøÉÏÓÐÁ˺ܶàÕâÑùµÄÎÄÕ£¬²»¹ý¸Ð¾õ²¢²»ÊǺÜÈ«£¬ÎÒ¶¼¶«ÕÒÎ÷ÕÒ²Å×îÖÕ°ÑJAVAµ÷ÓÃc++¸ø¸ã¶¨¡£
ÏÂÃæÒýÓÃÁ˺ܶàÍøÉÏÒѾ­ÓеĵÄÄÚÈÝ£¬ÎÒÔÚÕâÀïÖ»ÊÇÕûºÏÒ»´Î£¬ÈÃÒÔºóµÄÅóÓÑÉÙ×ßÍøÂ·¡£
¶à˵ÎÞÒæ£¬¾ßÌåÈçÏ£º
×÷Õß:mykoma
¼ÙÉèËùÓÐÎļþ¶¼·ÅÔÚd:\
Step 1:
дJAVAÎļþ
ÀýÈç³ÌÐòtestdll.java£¬ÄÚÈÝΪ£º   
  ......

C/C++¶¨ÒåÈ«¾Ö±äÁ¿/³£Á¿¼¸ÖÖ·½·¨µÄÇø±ð

. ±àÒëµ¥Ôª(Ä£¿é)£º
    ÔÚIDE¿ª·¢¹¤¾ß´óÐÐÆäµÀµÄ½ñÌ죬¶ÔÓÚ±àÒëµÄһЩ¸ÅÄîºÜ¶àÈËÒѾ­²»ÔÙÇå³þÁË£¬ºÜ¶à³ÌÐòÔ±×îŵľÍÊÇ´¦ÀíÁ¬½Ó´íÎó(LINK ERROR), ÒòΪËü²»Ïñ±àÒë´íÎóÄÇÑù¿ÉÒÔ¸ø³öÄã³ÌÐò´íÎóµÄ¾ßÌåλÖã¬Äã³£³£¶ÔÕâÖÖ´íÎó¸Ðµ½°ÃÄÕ£¬µ«ÊÇÈç¹ûÄã¾­³£Ê¹ÓÃgcc£¬makefileµÈ¹¤¾ßÔÚlinux»òÕßǶÈëʽÏÂ×ö¿ª·¢¹¤×÷µÄ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ