Linux °æ (¾«»ªÇø)

·¢ÐÅÈË: netiscpu (˵²»Èç×ö), ÐÅÇø: Linux
±ê  Ìâ: [B] ÇáÇáËÉËÉÕÆÎÕ Linux (27)
·¢ÐÅÕ¾: ×Ï ¶¡ Ïã (Sat Jul 25 14:34:40 1998), ×ªÐÅ



        ±¾ÎÄת×Ôhttp://linuxclub.mnf.nu (ÉϺ£Linux ClubÖ÷Ò³)

                                 C ÓïÑÔ±à³Ì
                                      
   Ô­Öø: Rick McMullin
   
   
   
                                    Ç°ÑÔ
                                      
       ±¾ÎÄÒë×Ô¡¶Slackware/RedHat Linux Unleashed¡·(µÚÈý°æ) Ò»ÊéµÄµÚ27ÕÂ:
   Programming in C. ¹ØÓÚ±¾ÒëÎÄÓÐÈκεĻ°ÇëÓëÎÒÁªÏµ:

   mailto:con@nease.net.
   
   LinuxµÄ·¢ÐаæÖаüº¬Á˺ܶàÈí¼þ¿ª·¢¹¤¾ß. ËüÃÇÖеĺܶàÊÇÓÃÓÚ C ºÍ
   C++Ó¦ÓóÌÐò¿ª·¢µÄ. ±¾ÎĽéÉÜÁËÔÚ Linux ÏÂÄÜÓÃÓÚ C
   Ó¦ÓóÌÐò¿ª·¢ºÍµ÷ÊԵŤ¾ß. ±¾ÎĵÄÖ÷Ö¼ÊǽéÉÜÈçºÎÔÚ Linux ÏÂʹÓàC
   ±àÒëÆ÷ºÍÆäËû C ±à³Ì¹¤¾ß, ¶ø·Ç C ÓïÑÔ±à³ÌµÄ½Ì³Ì.
   ÔÚ±¾ÎÄÖÐÄ㽫ѧµ½ÒÔÏÂ֪ʶ:
   
     * Ê²Ã´ÊÇ C
     * GNU C ±àÒëÆ÷
     * Óàgdb À´µ÷ÊÔGCCÓ¦ÓóÌÐò
       
       ÄãÒ²ÄÜ¿´µ½Ëæ Linux ·¢ÐеÄÆäËûÓÐÓõĠC ±à³Ì¹¤¾ß.
   ÕâЩ¹¤¾ß°üÀ¨Ô´³ÌÐòÃÀ»¯³ÌÐò(pretty print programs), ¸½¼ÓµÄµ÷ÊÔ¹¤¾ß,
   º¯ÊýÀàÐÍ×Ô¶¯Éú³É¹¤¾ß(automatic function prototypers).
   
   
            __________________________________________________________
                                         
          ×¢Òâ: Ô´³ÌÐòÃÀ»¯³ÌÐò(pretty print
          programs)×Ô¶¯°ïÄã¸ñʽ»¯Ô´´úÂë²úÉúʼÖÕÈçÒ»µÄËõ½ø¸ñʽ.
            __________________________________________________________
                                         
                                 Ê²Ã´ÊÇ C?
                                      
       C ÊÇÒ»ÖÖÔÚ UNIX ²Ù×÷ϵͳµÄÔçÆھͱ»¹ã·ºÊ¹ÓõÄͨÓñà³ÌÓïÑÔ.
   Ëü×îÔçÊÇÓɱ´¶ûʵÑéÊҵĠDennis Ritchie ÎªÁË UNIX µÄ¸¨Öú¿ª·¢¶øдµÄ,
   ¿ªÊ¼Ê± UNIX ÊÇÓûã±àÓïÑÔºÍÒ»ÖֽРB µÄÓïÑÔ±àдµÄ. ´ÓÄÇʱºòÆð, C
   ¾Í³ÉΪÊÀ½çÉÏʹÓÃ×î¹ã·º¼ÆËã»úÓïÑÔ.
   
       C ÄÜÔÚ±à³ÌÁìÓòÀïµÃµ½Èç´Ë¹ã·ºÖ§³ÖµÄÔ­ÒòÓÐÒÔÏÂһЩ:
     * ËüÊÇÒ»Öַdz£Í¨ÓõÄÓïÑÔ.
       ¼¸ºõÄãËùÄÜÏëµ½µÄÈκÎÒ»ÖÖ¼ÆËã»úÉ϶¼ÓÐÖÁÉÙÒ»ÖÖÄÜÓõĠC ±àÒëÆ÷.
       ²¢ÇÒËüµÄÓï·¨ºÍº¯Êý¿âÔÚ²»Í¬µÄƽ̨É϶¼ÊÇͳһµÄ,
       Õâ¸öÌØÐÔ¶Ô¿ª·¢ÕßÀ´ËµºÜÓÐÎüÒýÁ¦.
     * ÓàC Ð´µÄ³ÌÐòÖ´ÐÐËٶȺܿì.
     * C ÊÇËùÓа汾µÄUNIXÉϵÄϵͳÓïÑÔ.
       
       C ÔÚ¹ýÈ¥µÄ¶þÊ®ÄêÖÐÓÐÁ˺ܴóµÄ·¢Õ¹. ÔÚ80Äê´úÄ©ÆÚÃÀ¹ú¹ú¼Ò±ê׼Э»á
   (American National Standards Institute)·¢²¼ÁËÒ»¸ö±»³ÆΪ ANSI C µÄ C
   ÓïÑÔ±ê×¼.Õâ¸ü¼Ó±£Ö¤Á˽«À´ÔÚ²»Í¬Æ½Ì¨ÉϵĠC µÄÒ»ÖÂÐÔ.
   ÔÚ80Äê´ú»¹³öÏÖÁËÒ»ÖÖ C µÄÃæÏò¶ÔÏóµÄÀ©Õ¹³ÆΪ C++. C++ ½«ÔÚÁíһƪÎÄÕÂ
   "C++ ±à³Ì"ÖÐÃèÊö.
   
       Linux ÉÏ¿ÉÓõĠC ±àÒëÆ÷ÊÇ GNU C ±àÒëÆ÷,
   Ëü½¨Á¢ÔÚ×ÔÓÉÈí¼þ»ù½ð»áµÄ±à³ÌÐí¿ÉÖ¤µÄ»ù´¡ÉÏ, Òò´Ë¿ÉÒÔ×ÔÓÉ·¢²¼. ÄãÄÜÔÚ
   Linux µÄ·¢ÐйâÅÌÉÏÕÒµ½Ëü.
   
   
   
   
                                GNU C ±àÒëÆ÷
                                      
       Ëæ Slackware Linux ·¢ÐеĠGNU C ±àÒëÆ÷(GCC)ÊÇÒ»¸öÈ«¹¦ÄܵĠANSI C
   ¼æÈݱàÒëÆ÷. Èç¹ûÄãÊìϤÆäËû²Ù×÷ϵͳ»òÓ²¼þƽ̨ÉϵÄÒ»ÖÖ C ±àÒëÆ÷,
   Ä㽫ÄܺܿìµØÕÆÎÕ GCC. ±¾½Ú½«½éÉÜÈçºÎʹÓàGCC ºÍһЩ GCC
   ±àÒëÆ÷×î³£ÓõÄÑ¡Ïî.
   
   
                                  Ê¹ÓàGCC
                                      
       Í¨³£ºó¸úһЩѡÏîºÍÎļþÃûÀ´Ê¹ÓàGCC ±àÒëÆ÷. gcc ÃüÁîµÄ»ù±¾Ó÷¨ÈçÏÂ:
gcc [options] [filenames]

       ÃüÁîÐÐÑ¡ÏîÖ¸¶¨µÄ²Ù×÷½«ÔÚÃüÁîÐÐÉÏÿ¸ö¸ø³öµÄÎļþÉÏÖ´ÐÐ.
   ÏÂһС½Ú½«ÐðÊöһЩÄã»á×î³£Óõ½µÄÑ¡Ïî.
   
   
                                  GCC Ñ¡Ïî
                                      
       GCC Óг¬¹ý100¸öµÄ±àÒëÑ¡Ïî¿ÉÓÃ.
   ÕâЩѡÏîÖеÄÐí¶àÄã¿ÉÄÜÓÀÔ¶¶¼²»»áÓõ½, µ«Ò»Ð©Ö÷ÒªµÄÑ¡Ï»áƵ·±Óõ½.
   ºÜ¶àµÄ GCC Ñ¡Ïî°üÀ¨Ò»¸öÒÔÉϵÄ×Ö·û.
   Òò´ËÄã±ØÐëΪÿ¸öÑ¡ÏîÖ¸¶¨¸÷×ÔµÄÁ¬×Ö·û, ²¢ÇÒ¾ÍÏó´ó¶àÊý Linux
   ÃüÁîÒ»ÑùÄã²»ÄÜÔÚÒ»¸öµ¥¶ÀµÄÁ¬×Ö·ûºó¸úÒ»×éÑ¡Ïî. ÀýÈç,
   ÏÂÃæµÄÁ½¸öÃüÁîÊDz»Í¬µÄ:
gcc -p -g test.c

gcc -pg test.c

       µÚÒ»ÌõÃüÁî¸æËß GCC ±àÒë test.c Ê±Îª prof
   ÃüÁÁ¢ÆÊÎö(profile)ÐÅÏ¢²¢ÇҰѵ÷ÊÔÐÅÏ¢¼ÓÈëµ½¿ÉÖ´ÐеÄÎļþÀï.
   µÚ¶þÌõÃüÁîÖ»¸æËß GCC Îª gprof ÃüÁÁ¢ÆÊÎöÐÅÏ¢.
   
       µ±Äã²»ÓÃÈκÎÑ¡Ïî±àÒëÒ»¸ö³ÌÐòʱ, GCC ½«»á½¨Á¢(¼Ù¶¨±àÒë³É¹¦)Ò»¸öÃûΪ
   a.out µÄ¿ÉÖ´ÐÐÎļþ. ÀýÈç, ÏÂÃæµÄÃüÁÔÚµ±Ç°Ä¿Â¼Ï²úÉúÒ»¸ö½Ð a.out
   µÄÎļþ:
gcc test.c

       ÄãÄÜÓà-o ±àÒëÑ¡ÏîÀ´Îª½«²úÉúµÄ¿ÉÖ´ÐÐÎļþÖ¸¶¨Ò»¸öÎļþÃûÀ´´úÌæ
   a.out. ÀýÈç, ½«Ò»¸ö½Ð count.c µÄ C ³ÌÐò±àÒëΪÃû½Ð count µÄ¿ÉÖ´ÐÐÎļþ,
   Ä㽫ÊäÈëÏÂÃæµÄÃüÁî:
gcc -o count count.c

   
            __________________________________________________________
                                         
          ×¢Òâ: µ±ÄãʹÓà-o Ñ¡Ïîʱ, -o ºóÃæ±ØÐë¸úÒ»¸öÎļþÃû.
            __________________________________________________________
                                         
       GCC Í¬ÑùÓÐÖ¸¶¨±àÒëÆ÷´¦Àí¶àÉٵıàÒëÑ¡Ïî. -c Ñ¡Ïî¸æËß GCC
   ½ö°ÑÔ´´úÂë±àÒëΪĿ±ê´úÂë¶øÌø¹ý»ã±àºÍÁ¬½ÓµÄ²½Öè.
   Õâ¸öÑ¡ÏîʹÓõķdz£Æµ·±ÒòΪËüʹµÃ±àÒë¶à¸ö C
   ³ÌÐòʱËٶȸü¿ì²¢ÇÒ¸üÒ×ÓÚ¹ÜÀí. È±Ê¡Ê± GCC ½¨Á¢µÄÄ¿±ê´úÂëÎļþÓÐÒ»¸ö .o
   µÄÀ©Õ¹Ãû.
   
       -S ±àÒëÑ¡Ïî¸æËß GCC ÔÚΪ C ´úÂë²úÉúÁË»ã±àÓïÑÔÎļþºóÍ£Ö¹±àÒë. GCC
   ²úÉúµÄ»ã±àÓïÑÔÎļþµÄȱʡÀ©Õ¹ÃûÊÇ .s . -E
   Ñ¡Ïîָʾ±àÒëÆ÷½ö¶ÔÊäÈëÎļþ½øÐÐÔ¤´¦Àí. µ±Õâ¸öÑ¡ÏʹÓÃʱ,
   Ô¤´¦ÀíÆ÷µÄÊä³ö±»Ë͵½±ê×¼Êä³ö¶ø²»ÊÇ´¢´æÔÚÎļþÀï.
   
                                ÓÅ »¯ Ñ¡ Ïî
                                      
       µ±ÄãÓàGCC ±àÒë C ´úÂëʱ,
   Ëü»áÊÔ×ÅÓÃ×îÉÙµÄʱ¼äÍê³É±àÒë²¢ÇÒʹ±àÒëºóµÄ´úÂëÒ×ÓÚµ÷ÊÔ.
   Ò×ÓÚµ÷ÊÔÒâζ×űàÒëºóµÄ´úÂëÓëÔ´´úÂëÓÐͬÑùµÄÖ´ÐдÎÐò, ±àÒëºóµÄ´úÂëûÓо
   ¹ýÓÅ»¯. ÓкܶàÑ¡Ïî¿ÉÓÃÓÚ¸æËß GCC
   ÔںķѸü¶à±àÒëʱ¼äºÍÎþÉüÒ×µ÷ÊÔÐԵĻù´¡ÉϲúÉú¸üС¸ü¿ìµÄ¿ÉÖ´ÐÐÎļþ.
   ÕâЩѡÏîÖÐ×îµäÐ͵ÄÊÇ-O ºÍ -O2 Ñ¡Ïî.
   
       -O Ñ¡Ïî¸æËß GCC ¶ÔÔ´´úÂë½øÐлù±¾ÓÅ»¯.
   ÕâЩÓÅ»¯ÔÚ´ó¶àÊýÇé¿ö϶¼»áʹ³ÌÐòÖ´Ðеĸü¿ì. -O2 Ñ¡Ïî¸æËß GCC
   ²úÉú¾¡¿ÉÄÜСºÍ¾¡¿ÉÄÜ¿ìµÄ´úÂë. -O2 Ñ¡Ïʹ±àÒëµÄËٶȱÈʹÓà-O Ê±Âý.
   µ«Í¨³£²úÉúµÄ´úÂëÖ´ÐÐËٶȻá¸ü¿ì.
   
       ³ýÁË -O ºÍ -O2 ÓÅ»¯Ñ¡ÏîÍâ, »¹ÓÐһЩµÍ¼¶Ñ¡ÏîÓÃÓÚ²úÉú¸ü¿ìµÄ´úÂë.
   ÕâЩѡÏî·Ç³£µÄÌØÊâ,
   ¶øÇÒ×îºÃÖ»Óе±ÄãÍêÈ«Àí½âÕâЩѡÏ»á¶Ô±àÒëºóµÄ´úÂë²úÉúʲôÑùµÄЧ¹ûʱÔÙ
   È¥Ê¹ÓÃ. ÕâЩѡÏîµÄÏêϸÃèÊö, Çë²Î¿¼ GCC µÄÖ¸ÄÏÒ³, ÔÚÃüÁîÐÐÉϼüÈë man
   gcc .
   
                               µ÷ÊÔºÍÆÊÎöÑ¡Ïî
                                      
       GCC Ö§³ÖÊýÖÖµ÷ÊÔºÍÆÊÎöÑ¡Ïî. ÔÚÕâЩѡÏîÀïÄã»á×î³£Óõ½µÄÊÇ -g ºÍ -pg
   Ñ¡Ïî.
       -g Ñ¡Ïî¸æËß GCC ²úÉúÄܱ» GNU µ÷ÊÔÆ÷ʹÓõĵ÷ÊÔÐÅÏ¢ÒÔ±ãµ÷ÊÔÄãµÄ³ÌÐò.
   GCC ÌṩÁËÒ»¸öºÜ¶àÆäËû C ±àÒëÆ÷ÀïûÓеÄÌØÐÔ, ÔÚ GCC ÀïÄãÄÜʹ -g ºÍ -O
   (²úÉúÓÅ»¯´úÂë)ÁªÓÃ.
   ÕâÒ»µã·Ç³£ÓÐÓÃÒòΪÄãÄÜÔÚÓë×îÖÕ²úÆ·¾¡¿ÉÄÜÏà½üµÄÇé¿öϵ÷ÊÔÄãµÄ´úÂë.
   ÔÚÄãͬʱʹÓÃÕâÁ½¸öÑ¡ÏîʱÄã±ØÐëÇå³þÄãËùдµÄijЩ´úÂëÒѾÔÚÓÅ»¯Ê±±» GCC
   ×÷Á˸Ķ¯. ¹ØÓÚµ÷ÊÔ C ³ÌÐòµÄ¸ü¶àÐÅÏ¢Çë¿´ÏÂÒ»½Ú"Óàgdb µ÷ÊÔ C ³ÌÐò"  .
       -pg Ñ¡Ïî¸æËß GCC ÔÚÄãµÄ³ÌÐòÀï¼ÓÈë¶îÍâµÄ´úÂë, Ö´ÐÐʱ, ²úÉú gprof
   ÓõÄÆÊÎöÐÅÏ¢ÒÔÏÔʾÄãµÄ³ÌÐòµÄºÄʱÇé¿ö. ¹ØÓÚ gprof µÄ¸ü¶àÐÅÏ¢Çë²Î¿¼
   "gprof" Ò»½Ú.
   
   
                            Óàgdb µ÷ÊÔ GCC ³ÌÐò
                                      
       Linux °üº¬ÁËÒ»¸ö½Ð gdb µÄ GNU µ÷ÊÔ³ÌÐò. gdb ÊÇÒ»¸öÓÃÀ´µ÷ÊÔ C ºÍ
   C++ ³ÌÐòµÄÇ¿Á¦µ÷ÊÔÆ÷.
   ËüʹÄãÄÜÔÚ³ÌÐòÔËÐÐʱ¹Û²ì³ÌÐòµÄÄÚ²¿½á¹¹ºÍÄÚ´æµÄʹÓÃÇé¿ö. ÒÔÏÂÊÇ gdb
   ËùÌṩµÄһЩ¹¦ÄÜ:
     * ËüʹÄãÄܼàÊÓÄã³ÌÐòÖбäÁ¿µÄÖµ.
     * ËüʹÄãÄÜÉèÖöϵãÒÔʹ³ÌÐòÔÚÖ¸¶¨µÄ´úÂëÐÐÉÏÍ£Ö¹Ö´ÐÐ.
     * ËüʹÄãÄÜÒ»ÐÐÐеÄÖ´ÐÐÄãµÄ´úÂë.
       
       
       ÔÚÃüÁîÐÐÉϼüÈë gdb ²¢°´»Ø³µ¼ü¾Í¿ÉÒÔÔËÐРgdb ÁË, Èç¹ûÒ»ÇÐÕý³£µÄ»°,
   gdb ½«±»Æô¶¯²¢ÇÒÄ㽫ÔÚÆÁÄ»ÉÏ¿´µ½ÀàËƵÄÄÚÈÝ:
GDB is free software and you are welcome to distribute copies of it

under certain conditions; type "show copying" to see the conditions.

There is absolutely no warranty for GDB; type "show warranty" for details.

GDB 4.14 (i486-slakware-linux), Copyright 1995 Free Software Foundation, Inc.

(gdb)

       µ±ÄãÆô¶¯ gdb ºó, ÄãÄÜÔÚÃüÁîÐÐÉÏÖ¸¶¨ºÜ¶àµÄÑ¡Ïî.
   ÄãÒ²¿ÉÒÔÒÔÏÂÃæµÄ·½Ê½À´ÔËÐРgdb :
gdb <fname>

       µ±ÄãÓÃÕâÖÖ·½Ê½ÔËÐРgdb , ÄãÄÜÖ±½ÓÖ¸¶¨ÏëÒªµ÷ÊԵijÌÐò. Õ⽫¸æËßgdb
   ×°ÈëÃûΪ fname µÄ¿ÉÖ´ÐÐÎļþ. ÄãÒ²¿ÉÒÔÓàgdb
   È¥¼ì²éÒ»¸öÒò³ÌÐòÒì³£ÖÕÖ¹¶ø²úÉúµÄ core Îļþ,
   »òÕßÓëÒ»¸öÕýÔÚÔËÐеijÌÐòÏàÁ¬. Äã¿ÉÒԲο¼ gdb Ö¸ÄÏÒ³»òÔÚÃüÁîÐÐÉϼüÈë
   gdb -h µÃµ½Ò»¸öÓйØÕâЩѡÏîµÄ˵Ã÷µÄ¼òµ¥Áбí.
   
   
                Îªµ÷ÊÔ±àÒë´úÂë(Compiling Code for Debugging)
                                      
       ÎªÁËʹ gdb Õý³£¹¤×÷, Äã±ØÐëʹÄãµÄ³ÌÐòÔÚ±àÒëʱ°üº¬µ÷ÊÔÐÅÏ¢.
   µ÷ÊÔÐÅÏ¢°üº¬Äã³ÌÐòÀïµÄÿ¸ö±äÁ¿µÄÀàÐͺÍÔÚ¿ÉÖ´ÐÐÎļþÀïµÄµØÖ·Ó³ÉäÒÔ¼°Ô´´ú
   ÂëµÄÐкÅ.  gdb ÀûÓÃÕâЩÐÅϢʹԴ´úÂëºÍ»úÆ÷ÂëÏà¹ØÁª.
   
       ÔÚ±àÒëʱÓà-g Ñ¡Ïî´ò¿ªµ÷ÊÔÑ¡Ïî.
   
   
                                gdb »ù±¾ÃüÁî
                                      
        gdb Ö§³ÖºÜ¶àµÄÃüÁîʹÄãÄÜʵÏÖ²»Í¬µÄ¹¦ÄÜ.
   ÕâЩÃüÁî´Ó¼òµ¥µÄÎļþ×°Èëµ½ÔÊÐíÄã¼ì²éËùµ÷ÓõĶÑÕ»ÄÚÈݵĸ´ÔÓÃüÁî,
   ±í27.1ÁгöÁËÄãÔÚÓàgdb µ÷ÊÔʱ»áÓõ½µÄһЩÃüÁî. ÏëÁ˽â gdb
   µÄÏêϸʹÓÃÇë²Î¿¼ gdb µÄÖ¸ÄÏÒ³.
   
   
   
                          ±í 27.1. »ù±¾ gdb ÃüÁî.
                                      
                                      
                                      
                               Ãü   Áî Ãè  Êö
                       file ×°ÈëÏëÒªµ÷ÊԵĿÉÖ´ÐÐÎļþ.
                          kill ÖÕÖ¹ÕýÔÚµ÷ÊԵijÌÐò.
                   list Áгö²úÉúÖ´ÐÐÎļþµÄÔ´´úÂëµÄÒ»²¿·Ö.
                    next Ö´ÐÐÒ»ÐÐÔ´´úÂ뵫²»½øÈ뺯ÊýÄÚ²¿.
                    step Ö´ÐÐÒ»ÐÐÔ´´úÂë¶øÇÒ½øÈ뺯ÊýÄÚ²¿.
                          run Ö´Ðе±Ç°±»µ÷ÊԵijÌÐò
                               quit ÖÕÖ¹ gdb
              watch Ê¹ÄãÄܼàÊÓÒ»¸ö±äÁ¿µÄÖµ¶ø²»¹ÜËüºÎʱ±»¸Ä±ä.
           break ÔÚ´úÂëÀïÉèÖöϵã, Õ⽫ʹ³ÌÐòÖ´Ðе½ÕâÀïʱ±»¹ÒÆð.
              make Ê¹ÄãÄܲ»Í˳ö gdb ¾Í¿ÉÒÔÖØвúÉú¿ÉÖ´ÐÐÎļþ.
               shell Ê¹ÄãÄܲ»À뿪 gdb ¾ÍÖ´ÐРUNIX shell ÃüÁî.
                                      
   
   
   
        gdb Ö§³ÖºÜ¶àÓë UNIX shell ³ÌÐòÒ»ÑùµÄÃüÁî±à¼­ÌØÕ÷. ÄãÄÜÏóÔÚ bash »ò
   tcshÀïÄÇÑù°´ Tab ¼üÈàgdb °ïÄã²¹ÆëÒ»¸öΨһµÄÃüÁî, Èç¹û²»Î¨Ò»µÄ»° gdb
   »áÁгöËùÓÐÆ¥ÅäµÄÃüÁî. ÄãÒ²ÄÜÓùâ±ê¼üÉÏÏ·­ÀúÊ·ÃüÁî.
   
                                gdb Ó¦ÓþÙÀý
                                      
       ±¾½ÚÓÃÒ»¸öʵÀý½ÌÄãÒ»²½²½µÄÓàgdb µ÷ÊÔ³ÌÐò. ±»µ÷ÊԵijÌÐòÏ൱µÄ¼òµ¥,
   µ«ËüչʾÁË gdb µÄµäÐÍÓ¦ÓÃ.
   
       ÏÂÃæÁгöÁ˽«±»µ÷ÊԵijÌÐò. Õâ¸ö³ÌÐò±»³ÆΪ greeting ,
   ËüÏÔʾһ¸ö¼òµ¥µÄÎʺò, ÔÙÓ÷´Ðò½«ËüÁгö.
#include  <stdio.h>



main ()

{

  char my_string[] = "hello there";



  my_print (my_string);

  my_print2 (my_string);

}



void my_print (char *string)

{

  printf ("The string is %s\n", string);

}



void my_print2 (char *string)

{

  char *string2;

  int size, i;



  size = strlen (string);

  string2 = (char *) malloc (size + 1);

  for (i = 0; i < size; i++)

    string2[size - i] = string[i];

  string2[size+1] = `\0';

  printf ("The string printed backward is %s\n", string2);

}

       ÓÃÏÂÃæµÄÃüÁî±àÒëËü:
   
gcc -o test test.c

       Õâ¸ö³ÌÐòÖ´ÐÐʱÏÔʾÈçϽá¹û:
The string is hello there

The string printed backward is

       Êä³öµÄµÚÒ»ÐÐÊÇÕýÈ·µÄ, µ«µÚ¶þÐдòÓ¡³öµÄ¶«Î÷²¢²»ÊÇÎÒÃÇËùÆÚÍûµÄ.
   ÎÒÃÇËùÉèÏëµÄÊä³öÓ¦¸ÃÊÇ:
The string printed backward is ereht olleh

       ÓÉÓÚijЩԭÒò, my_print2 º¯ÊýûÓÐÕý³£¹¤×÷. ÈÃÎÒÃÇÓà gdb
   ¿´¿´ÎÊÌ⾿¾¹³öÔÚÄĶù, ÏȼüÈëÈçÏÂÃüÁî:
   
gdb greeting

   
            __________________________________________________________
                                         
          ×¢Òâ: ¼ÇµÃÔÚ±àÒë greeting ³ÌÐòʱ°Ñµ÷ÊÔÑ¡Ïî´ò¿ª.
            __________________________________________________________
                                         
       Èç¹ûÄãÔÚÊäÈëÃüÁîʱÍüÁË°ÑÒªµ÷ÊԵijÌÐò×÷Ϊ²ÎÊý´«¸ø gdb , Äã¿ÉÒÔÔÚ
   gdb Ìáʾ·ûÏÂÓàfile ÃüÁîÀ´ÔØÈëËü:
   
(gdb) file greeting

       Õâ¸öÃüÁÔØÈë greeting ¿ÉÖ´ÐÐÎļþ¾ÍÏóÄãÔÚ gdb ÃüÁîÐÐÀï×°ÈëËüÒ»Ñù.
   
       ÕâʱÄãÄÜÓàgdb µÄ run ÃüÁîÀ´ÔËÐРgreeting ÁË. µ±ËüÔÚ gdb
   Àï±»ÔËÐкó½á¹û´óÔ¼»áÏóÕâÑù:
(gdb) run

Starting program: /root/greeting

The string is hello there

The string printed backward is

Program exited with code 041

       Õâ¸öÊä³öºÍÔÚ gdb ÍâÃæÔËÐеĽá¹ûÒ»Ñù. ÎÊÌâÊÇ,
   ÎªÊ²Ã´·´Ðò´òӡûÓй¤×÷? ÎªÁËÕÒ³öÖ¢½áËùÔÚ, ÎÒÃÇ¿ÉÒÔÔÚ my_print2 º¯ÊýµÄ
   for Óï¾äºóÉèÒ»¸ö¶Ïµã, ¾ßÌåµÄ×ö·¨ÊÇÔÚ gdb Ìáʾ·ûϼüÈë list ÃüÁîÈý´Î,
   ÁгöÔ´´úÂë:
(gdb) list

(gdb) list

(gdb) list

   
            __________________________________________________________
                                         
          ¼¼ÇÉ:  ÔÚ gdb Ìáʾ·ûÏ°´»Ø³µ½¡½«Öظ´ÉÏÒ»¸öÃüÁî.
            __________________________________________________________
                                         
       µÚÒ»´Î¼üÈë list ÃüÁîµÄÊä³öÈçÏÂ:
   
1       #include  <stdio.h>

2

3       main ()

4       {

5         char my_string[] = "hello there";

6

7         my_print (my_string);

8         my_print2 (my_string);

9       }

10

       Èç¹û°´Ï»سµ, gdb ½«ÔÙÖ´ÐÐÒ»´Î list ÃüÁî, ¸ø³öÏÂÁÐÊä³ö:
   
11      my_print (char *string)

12      {

13        printf ("The string is %s\n", string);

14      }

15

16      my_print2 (char *string)

17      {

18        char *string2;

19        int size, i;

20

       ÔÙ°´Ò»´Î»Ø³µ½«Áгö greeting ³ÌÐòµÄÊ£Óಿ·Ö:
21        size = strlen (string);

22        string2 = (char *) malloc (size + 1);

23        for (i = 0; i < size; i++)

24          string2[size - i] = string[i];

25        string2[size+1] = `\0';

26        printf ("The string printed backward is %s\n", string2);

27      }

       ¸ù¾ÝÁгöµÄÔ´³ÌÐò, ÄãÄÜ¿´µ½ÒªÉè¶ÏµãµÄµØ·½ÔÚµÚ24ÐÐ, ÔÚ gdb
   ÃüÁîÐÐÌáʾ·ûϼüÈëÈçÏÂÃüÁîÉèÖöϵã:
(gdb) break 24

       gdb ½«×÷³öÈçϵÄÏìÓ¦:
Breakpoint 1 at 0x139: file greeting.c, line 24

(gdb)

   
       ÏÖÔÚÔÙ¼üÈë run ÃüÁî, ½«²úÉúÈçϵÄÊä³ö:
   
Starting program: /root/greeting

The string is hello there



Breakpoint 1, my_print2 (string = 0xbfffdc4 "hello there") at greeting.c :24

24  string2[size-i]=string[i]

       ÄãÄÜͨ¹ýÉèÖÃÒ»¸ö¹Û²ì string2[size - i]
   ±äÁ¿µÄÖµµÄ¹Û²ìµãÀ´¿´³ö´íÎóÊÇÔõÑù²úÉúµÄ, ×ö·¨ÊǼüÈë:
   
(gdb) watch string2[size - i]

       gdb ½«×÷³öÈçÏ»ØÓ¦:
Watchpoint 2: string2[size - i]

       ÏÖÔÚ¿ÉÒÔÓànext ÃüÁîÀ´Ò»²½²½µÄÖ´ÐРfor Ñ­»·ÁË:
   
(gdb) next

       ¾¹ýµÚÒ»´ÎÑ»·ºó,  gdb ¸æËßÎÒÃÇ string2[size - i] µÄÖµÊÇ `h`. gdb
   ÓÃÈçϵÄÏÔʾÀ´¸æËßÄãÕâ¸öÐÅÏ¢:
   
Watchpoint 2, string2[size - i]

Old value = 0 `\000'

New value = 104 `h'

my_print2(string = 0xbfffdc4 "hello there") at greeting.c:23

23 for (i=0; i<size; i++)

       Õâ¸öÖµÕýÊÇÆÚÍûµÄ. ºóÀ´µÄÊý´ÎÑ­»·µÄ½á¹û¶¼ÊÇÕýÈ·µÄ. µ± i=10 Ê±,
   ±í´ïʽ string2[size - i] µÄÖµµÈÓÚ `e`,  size - i µÄÖµµÈÓÚ 1,
   ×îºóÒ»¸ö×Ö·ûÒÑ´«µ½Ð´®ÀïÁË.
   
       Èç¹ûÄãÔÙ°ÑÑ­»·Ö´ÐÐÏÂÈ¥, Äã»á¿´µ½ÒѾ­ÓÐÖµ·ÖÅä¸ø string2[0] ÁË,
   ¶øËüÊÇд®µÄµÚÒ»¸ö×Ö·û, ÒòΪ malloc
   º¯ÊýÔÚ·ÖÅäÄÚ´æʱ°ÑËüÃdzõʼ»¯Îª¿Õ(null)×Ö·û. ËùÒÔ string2
   µÄµÚÒ»¸ö×Ö·ûÊÇ¿Õ×Ö·û. Õâ½âÊÍÁËΪʲôÔÚ´òÓ¡ string2 Ê±Ã»ÓÐÈκÎÊä³öÁË.
   
       ÏÖÔÚÕÒ³öÁËÎÊÌâ³öÔÚÄÄÀï, ÐÞÕýÕâ¸ö´íÎóÊǺÜÈÝÒ×µÄ. ÄãµÃ°Ñ´úÂëÀïдÈë
   string2 µÄµÚÒ»¸ö×Ö·ûµÄµÄÆ«ÒÆÁ¿¸ÄΪ size - 1 ¶ø²»ÊÇ size. ÕâÊÇÒòΪ
   string2 µÄ´óСΪ 12, µ«ÆðʼƫÒÆÁ¿ÊÇ 0, ´®ÄÚµÄ×Ö·û´ÓÆ«ÒÆÁ¿ 0 µ½ Æ«ÒÆÁ¿
   10, Æ«ÒÆÁ¿ 11 Îª¿Õ×Ö·û±£Áô.
   
       ÎªÁËʹ´úÂëÕý³£¹¤×÷ÓкܶàÖÖÐ޸İ취. Ò»ÖÖÊÇÁíÉèÒ»¸ö±È´®µÄʵ¼Ê´óСС
   1 µÄ±äÁ¿. ÕâÊÇÕâÖÖ½â¾ö°ì·¨µÄ´úÂë:
#include  <stdio.h>



main ()


{

  char my_string[] = "hello there";



  my_print (my_string);

  my_print2 (my_string);

}



my_print (char *string)

{

  printf ("The string is %s\n", string);

}



my_print2 (char *string)

{

  char *string2;

  int size, size2, i;



  size = strlen (string);

  size2 = size -1;

  string2 = (char *) malloc (size + 1);

  for (i = 0; i < size; i++)

    string2[size2 - i] = string[i];

  string2[size] = `\0';

  printf ("The string printed backward is %s\n", string2);

}

                             ÁíÍâµÄ C ±à³Ì¹¤¾ß
                                      
       Slackware/RedHat Linux µÄ·¢ÐаæÖл¹°üÀ¨Ò»Ð©ÎÒÃÇÉÐδÌáµ½µÄ C ¿ª·¢¹¤¾ß.
   ±¾½Ú½«½éÉÜÕâЩ¹¤¾ßºÍËüÃǵĵäÐÍÓ÷¨.
   
                                   xxgdb
                                      
       xxgdb ÊÇ gdb µÄÒ»¸ö»ùÓÚ X Window ÏµÍ³µÄͼÐνçÃæ.  xxgdb
   °üÀ¨ÁËÃüÁîÐаæµÄ gdb ÉϵÄËùÓÐÌØÐÔ.  xxgdb
   Ê¹ÄãÄÜͨ¹ý°´°´Å¥À´Ö´Ðг£ÓõÄÃüÁî. ÉèÖÃÁ˶ϵãµÄµØ·½Ò²ÓÃͼÐÎÀ´ÏÔʾ.
   
       ÄãÄÜÔÚÒ»¸ö Xterm ´°¿ÚÀï¼üÈëÏÂÃæµÄÃüÁîÀ´ÔËÐÐËü:
xxgdb

       ÄãÄÜÓàgdb ÀïÈκÎÓÐЧµÄÃüÁîÐÐÑ¡ÏîÀ´³õʼ»¯ xxgdb . ´ËÍâ xxgdb
   Ò²ÓÐһЩÌØÓеÄÃüÁîÐÐÑ¡Ïî, ±í 27.2 ÁгöÁËÕâЩѡÏî.
   
   
                        ±í 27.2.  xxgdb ÃüÁîÐÐÑ¡Ïî.
                                      
                                      
                                      
                                      
                                      
                               Ñ¡  Ïî Ãè  Êö
                 db_name Ö¸¶¨ËùÓõ÷ÊÔÆ÷µÄÃû×Ö, È±Ê¡ÊÇ gdb.
                  db_prompt Ö¸¶¨µ÷ÊÔÆ÷Ìáʾ·û, È±Ê¡Îª gdb.
        gdbinit Ö¸¶¨³õʼ»¯ gdb µÄÃüÁîÎļþµÄÎļþÃû, È±Ê¡Îª .gdbinit.
                    nx ¸æËß xxgdb ²»Ö´ÐР.gdbinit Îļþ.
                            bigicon Ê¹Óôóͼ±ê.
                                      
   
   
   
   
                                   calls
                                      
        Äã¿ÉÒÔÔÚ sunsite.unc.edu FTP Õ¾µãÓÃÏÂÃæµÄ·¾¶:
   
   /pub/Linux/devel/lang/c/calls.tar.Z
   
       À´È¡µÃ calls , Ò»Ð©¾É°æ±¾µÄ Linux CD-ROM ·¢ÐаæÀïÒ²¸½´øÓÐ.
   ÒòΪËüÊÇÒ»¸öÓÐÓõŤ¾ß, ÎÒÃÇÔÚÕâÀïÒ²½éÉÜÒ»ÏÂ. Èç¹ûÄã¾õµÃÓÐÓõĻ°, ´Ó
   BBS, FTP, »òÁíÒ»ÕÅCD-ROM ÉÏŪһ¸ö¿½±´.  calls µ÷ÓàGCC
   µÄÔ¤´¦ÀíÆ÷À´´¦Àí¸ø³öµÄÔ´³ÌÐòÎļþ, È»ºóÊä³öÕâЩÎļþµÄÀïµÄº¯Êýµ÷ÓÃÊ÷ͼ.
   
   
   
            __________________________________________________________
                                         
          ×¢Òâ: ÔÚÄãµÄϵͳÉÏ°²×° calls ,
          ÒÔ³¬¼¶Óû§Éí·ÝµÇ¼ºóÖ´ÐÐÏÂÃæµÄ²½Öè: 1. ½âѹºÍ untar Îļþ. 2. cd
          ½øÈë calls untar ºó½¨Á¢µÄ×ÓĿ¼. 3. °ÑÃû½Ð calls µÄÎļþÒƶ¯µ½
          /usr/bin Ä¿Â¼. 4. °ÑÃû½Ð calls.1 µÄÎļþÒƶ¯µ½Ä¿Â¼ /usr/man/man1
          . 5. É¾³ý /tmp/calls Ä¿Â¼. ÕâЩ²½Ö轫°Ñ calls
          ³ÌÐòºÍËüµÄÖ¸ÄÏÒ³°²×°ÔØÄãµÄϵͳÉÏ.
            __________________________________________________________
                                         
       µ± calls ´òÓ¡³öµ÷Óøú×Ù½á¹ûʱ,
   ËüÔÚº¯ÊýºóÃæÓÃÖÐÀ¨ºÅ¸ø³öÁ˺¯ÊýËùÔÚÎļþµÄÎļþÃû:
main [test.c]

       Èç¹ûº¯Êý²¢²»ÊÇÏò calls ¸ø³öµÄÎļþÀïµÄ,  calls
   ²»ÖªµÀËùµ÷Óõĺ¯ÊýÀ´×ÔÄÄÀï, ÔòÖ»ÏÔʾº¯ÊýµÄÃû×Ö:
printf

       calls ²»¶ÔµÝ¹éºÍ¾²Ì¬º¯ÊýÊä³ö. µÝ¹éº¯ÊýÏÔʾ³ÉÏÂÃæµÄÑù×Ó:
fact <<< recursive in factorial.c >>>

       ¾²Ì¬º¯ÊýÏóÕâÑùÏÔʾ:
total [static in calculate.c]

       ×÷Ϊһ¸öÀý×Ó, ¼ÙÉèÓàcalls ´¦ÀíÏÂÃæµÄ³ÌÐò:
   
#include <stdio.h>



main ()

{

char my_string[] = "hello there";

my_print (my_string);

my_print2(my_string);

}



my_print (char *string)

{

printf ("The string is %s\n", string);

}



my_print2 (char *string)

{

  char *string2;

  int size, size2, i;



  size = strlen (string);

  size2 = size -1;

  string2 = (char *) malloc (size + 1);

  for (i = 0; i < size; i++)

    string2[size2 - i] = string[i];

  string2[size] = `\0';

  printf ("The string printed backward is %s\n", string2);

}

       ½«²úÉúÈçϵÄÊä³ö:
    1 main [test.c]

    2       my_print [test.c]

    3             printf

    4       my_print2 [test.c]

    5             strlen

    6             malloc

    7             printf

   calls ÓкܶàÃüÁîÐÐÑ¡ÏîÀ´ÉèÖò»Í¬µÄÊä³ö¸ñʽ,
   ÓйØÕâЩѡÏîµÄ¸ü¶àÐÅÏ¢Çë²Î¿¼ calls µÄÖ¸ÄÏÒ³. ·½·¨ÊÇÔÚÃüÁîÐÐÉϼüÈë
   calls -h .
   
   
   
                                   cproto
                                      
       cproto ¶ÁÈë C Ô´³ÌÐòÎļþ²¢×Ô¶¯ÎªÃ¿¸öº¯Êý²úÉúÀàÐÍÉêÃ÷. Óàcproto
   ¿ÉÒÔÔÚд³ÌÐòʱΪÄã½ÚÊ¡´óÁ¿ÓÃÀ´¶¨Ò庯ÊýÀàÐ͵Äʱ¼ä.
       Èç¹ûÄãÈàcproto ´¦ÀíÏÂÃæµÄ´úÂë:
#include  <stdio.h>



main ()

{

  char my_string[] = "hello there";

  my_print (my_string);

  my_print2(my_string);

}



my_print (char *string)

{

  printf ("The string is %s\n", *string);

}



my_print2 (char *string)

{

  char *string2;

  int size, size2, i;



  size = strlen (string);

  size2 = size -1;

  string2 = (char *) malloc (size + 1);

  for (i = 0; i < size; i++)

    string2[size2 - i] = string[i];

  string2[size] = `\0';

  printf ("The string printed backward is %s\n", string2);

}

       Ä㽫µÃµ½ÏÂÃæµÄÊä³ö:
/* test.c */

int main(void);

int my_print(char *string);

int my_print2(char *string);

       Õâ¸öÊä³ö¿ÉÒÔÖض¨Ïòµ½Ò»¸ö¶¨Ò庯ÊýÀàÐ͵İüº¬ÎļþÀï.
   
                                   indent
                                      
       indent ÊµÓóÌÐòÊÇ Linux Àï°üº¬µÄÁíÒ»¸ö±à³ÌʵÓù¤¾ß.
   Õâ¸ö¹¤¾ß¼òµ¥µÄ˵¾ÍΪÄãµÄ´úÂë²úÉúÃÀ¹ÛµÄËõ½øµÄ¸ñʽ. indent
   Ò²ÓкܶàÑ¡ÏîÀ´Ö¸¶¨ÈçºÎ¸ñʽ»¯ÄãµÄÔ´´úÂë.ÕâЩѡÏîµÄ¸ü¶àÐÅÏ¢Çë¿´indent
   µÄÖ¸ÄÏÒ³, ÔÚÃüÁîÐÐÉϼüÈë indent -h .
   
   
       ÏÂÃæµÄÀý×ÓÊÇ indent µÄȱʡÊä³ö:
   
       ÔËÐРindent ÒÔÇ°µÄ C ´úÂë:
#include  <stdio.h>



main () {

      char my_string[] = "hello there";

  my_print (my_string);

     my_print2(my_string); }



my_print (char *string)

{

  printf    ("The string is %s\n", *string);

}



my_print2           (char *string) {

    char *string2;

      int size, size2, i;



      size = strlen (string);

      size2 = size -1;

      string2 = (char *) malloc (size + 1);

  for (i = 0; i < size; i++)

            string2[size2 - i] = string[i];

      string2[size] = `\0';


      printf ("The string printed backward is %s\n", string2);

}

       ÔËÐРindent ºóµÄ C ´úÂë:
#include  <stdio.h>



main ()

{

  char my_string[] = "hello there";

  my_print (my_string);

  my_print2 (my_string);

}



my_print (char *string)

{

  printf ("The string is %s\n", *string);

}



my_print2 (char *string)

{

  char *string2;

  int size, size2, i;



  size = strlen (string);

  size2 = size -1;

  string2 = (char *) malloc (size + 1);

  for (i = 0; i < size; i++)

    string2[size2 - i] = string[i];

  string2[size] = `\0';

  printf ("The string printed backward is %s\n", string2);

}

        indent ²¢²»¸Ä±ä´úÂëµÄʵÖÊÄÚÈÝ, ¶øÖ»ÊǸıä´úÂëµÄÍâ¹Û.
   Ê¹Ëü±äµÃ¸ü¿É¶Á, ÕâÓÀÔ¶ÊÇÒ»¼þºÃÊÂ.
   
                                   gprof
                                      
       gprof ÊÇ°²×°ÔÚÄãµÄ Linux ÏµÍ³µÄ /usr/bin Ä¿Â¼ÏµÄÒ»¸ö³ÌÐò.
   ËüʹÄãÄÜÆÊÎöÄãµÄ³ÌÐò´Ó¶øÖªµÀ³ÌÐòµÄÄÄÒ»¸ö²¿·ÖÔÚÖ´ÐÐʱ×î·Ñʱ¼ä.
   
       gprof
   ½«¸æËßÄã³ÌÐòÀïÿ¸öº¯Êý±»µ÷ÓõĴÎÊýºÍÿ¸öº¯ÊýÖ´ÐÐʱËùռʱ¼äµÄ°Ù·Ö±È.
   ÄãÈç¹ûÏëÌá¸ßÄãµÄ³ÌÐòÐÔÄܵĻ°ÕâЩÐÅÏ¢·Ç³£ÓÐÓÃ.
   
       ÎªÁËÔÚÄãµÄ³ÌÐòÉÏʹÓàgprof, Äã±ØÐëÔÚ±àÒë³ÌÐòʱ¼ÓÉÏ -pg Ñ¡Ïî.
   Õ⽫ʹ³ÌÐòÔÚÿ´ÎÖ´ÐÐʱ²úÉúÒ»¸ö½Ð gmon.out µÄÎļþ. gprof
   ÓÃÕâ¸öÎļþ²úÉúÆÊÎöÐÅÏ¢.
   
       ÔÚÄãÔËÐÐÁËÄãµÄ³ÌÐò²¢²úÉúÁË gmon.out
   ÎļþºóÄãÄÜÓÃÏÂÃæµÄÃüÁî»ñµÃÆÊÎöÐÅÏ¢:
gprof <program_name>

       ²ÎÊý program_name ÊDzúÉú gmon.out ÎļþµÄ³ÌÐòµÄÃû×Ö.
   
   
            __________________________________________________________
                                         
          ¼¼ÇÉ: gprof ²úÉúµÄÆÊÎöÊý¾ÝºÜ´ó,
          Èç¹ûÄãÏë¼ì²éÕâЩÊý¾ÝµÄ»°×îºÃ°ÑÊä³öÖض¨Ïòµ½Ò»¸öÎļþÀï.
            __________________________________________________________
                                         
                                 f2c ºÍ p2c
                                      
       f2c ºÍ p2c ÊÇÁ½¸öÔ´´úÂëת»»³ÌÐò. f2c °Ñ FORTRAN ´úÂëת»»Îª C ´úÂë,
   p2c °Ñ Pascal ´úÂëת»»Îª C ´úÂë. µ±Äã°²×° GCC
   Ê±ÕâÁ½¸ö³ÌÐò¶¼»á±»°²×°ÉÏÈ¥.
   
       Èç¹ûÄãÓÐһЩÓàFORTRAN »ò Pascal Ð´µÄ´úÂëÒªÓàC ÖØдµÄ»°, f2c ºÍ
   p2c ¶ÔÄã·Ç³£ÓÐÓÃ. ÕâÁ½¸ö³ÌÐò²úÉúµÄ C ´úÂëÒ»°ã²»ÓÃÐ޸ľÍÖ±½ÓÄܱ» GCC
   ±àÒë.
   
       Èç¹ûҪת»»µÄ FORTRAN »ò Pascal ³ÌÐò±È½ÏСµÄ»°¿ÉÒÔÖ±½ÓʹÓàf2c »ò
   p2c ²»ÓüÓÈκÎÑ¡Ïî. Èç¹ûҪת»»µÄ³ÌÐò±È½ÏÅÓ´ó,
   °üº¬ºÜ¶àÎļþµÄ»°Äã¿ÉÄÜÒªÓõ½Ò»Ð©ÃüÁîÐÐÑ¡Ïî.
   
       ÔÚÒ»¸ö FORTRAN ³ÌÐòÉÏʹÓàf2c , ÊäÈëÏÂÃæµÄÃüÁî:
f2c my_fortranprog.f

   
            __________________________________________________________
                                         
          ×¢Òâ: f2c ÒªÇó±»×ª»»µÄ³ÌÐòµÄÀ©Õ¹ÃûΪ .f »ò a .F .
            __________________________________________________________
                                         
       Òª°ÑÒ»¸öPascal ³ÌÐò×°»»Îª C ³ÌÐò, ÊäÈëÏÂÃæµÄÃüÁî:
p2c my_pascalprogram.pas

       ÕâÁ½¸ö³ÌÐò²úÉúµÄ C Ô´´úÂëµÄÎļþÃû¶¼ºÍÔ­À´µÄÎļþÃûÏàͬ, µ«À©Õ¹ÃûÓÉ
   .f »ò .pas ±äΪ .c.

--

                              Enjoy Linux!
                          -----It's FREE!-----

¡ù ÐÞ¸Ä:£®netiscpu ÓÚ Jul 25 19:31:16 Ð޸ı¾ÎÄ£®[FROM: mtlab.hit.edu.cn]
¡ù À´Ô´:£®×Ï ¶¡ Ïã bbs.hit.edu.cn£®[FROM: mtlab.hit.edu.cn]
[°Ù±¦Ïä] [·µ»ØÊ×Ò³] [Éϼ¶Ä¿Â¼] [¸ùĿ¼] [·µ»Ø¶¥²¿] [Ë¢ÐÂ] [·µ»Ø]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
Ò³ÃæÖ´ÐÐʱ¼ä£º467.380ºÁÃë