Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö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²¡¶¾ !

//Á¬½ÓÍ·Îļþ
#include <io.h>
#include <dir.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//¿½±´ÎļþÄ£¿é
int copyfile (char *infile, char *outfile)
{
    FILE *in,*out; //¶¨ÒåÎļþÖ¸Õë
    in = fopen(infile,"r"); //´ ......

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

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

Æäʵ»Øµ÷º¯Êý²¢²»ÉñÃØ C/C++Öлص÷º¯Êý³õ̽

¼ò½é
¡¡¡¡¶ÔÓںܶà³õѧÕßÀ´Ëµ£¬ÍùÍù¾õµÃ»Øµ÷º¯ÊýºÜÉñÃØ£¬ºÜÏëÖªµÀ»Øµ÷º¯ÊýµÄ¹¤×÷Ô­Àí¡£±¾ÎĽ«Òª½âÊÍʲôÊǻص÷º¯Êý¡¢ËüÃÇÓÐʲôºÃ´¦¡¢ÎªÊ²Ã´ÒªÊ¹ÓÃËüÃǵȵÈÎÊÌ⣬ÔÚ¿ªÊ¼Ö®Ç°£¬¼ÙÉèÄãÒѾ­ÊìÖªÁ˺¯ÊýÖ¸Õë¡£
¡¡¡¡Ê²Ã´Êǻص÷º¯Êý£¿
¡¡¡¡¼ò¶øÑÔÖ®£¬»Øµ÷º¯Êý¾ÍÊÇÒ»¸öͨ¹ýº¯ÊýÖ¸Õëµ÷Óõĺ¯Êý¡£Èç¹ûÄã°Ñº¯ÊýµÄÖ¸Õë(µØÖ·)×÷Ϊ²ÎÊý ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ