home *** CD-ROM | disk | FTP | other *** search
Text File | 1988-03-15 | 74.7 KB | 2,461 lines |
-
-
-
-
-
-
-
-
-
-
-
- îáΓѼΓáΓ¿τÑ߬«Ñ «íÑß»ÑτÑ¡¿Ñ
- »Ñαß«¡á½∞¡δσ ¥éî
-
-
-
- TURBO-C
-
-
- Ä»¿ßá¡¿Ñ ∩ºδ¬á
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- î«ß¬óá 1988
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - 2 -
-
-
-
-
-
-
-
-
- Ç¡¡«Γᵿ∩
-
-
-
- é ñá¡¡«¼ ñ«¬π¼Ñ¡ΓÑ »α¿óÑñÑ¡δ «Γ½¿τ¿∩ ∩ºδ¬á Turbo-C «Γ «»¿-
- ßá¡¿∩ ∩ºδ¬á ó ¬¡¿úÑ ü.èÑα¡¿úá¡, ä.É¿Γτ¿ "ƒºδ¬ »α«úαá¼¼¿α«óá¡¿∩
- æ¿", î. "ö¿¡á¡ßδ ¿ ßΓáΓ¿ßΓ¿¬á", 1985. Åα¿óÑñÑ¡δ αáßΦ¿αÑ¡¿∩ ∩ºδ-
- ¬á. ÇóΓ«αδ: èáΦ¬áα«óá é.Ç., ÇαΓἫ¡Ñ¡¬«óá ì.ì.
-
- Å_α_¿_¼_Ñ_τ_á_¡_¿_Ñ. 櫬αáΘÑ¡¿∩ ó ΓѬßΓÑ K&R «º¡áτáεΓ ßß佬π ¡á
- ¬¡¿úπ ü.èÑα¡¿úá¡, ä.É¿Γτ¿ "ƒºδ¬ »α«úαá¼¼¿α«óá¡¿∩ æ¿", î.
- "ö¿¡á¡ßδ ¿ ßΓáΓ¿ßΓ¿¬á", 1985.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - 3 -
-
-
-
-
-
-
-
-
- æ«ñÑαªá¡¿Ñ
-
-
- Ç¡¡«Γᵿ∩................................................. 2
-
- 1. ÄÆïêùêƒ Turbo-C «Γ K&R.................................... 5
-
- 1.1. 諼¼Ñ¡Γáα¿¿ (K&R 2.1).................................. 5
- 1.2. êñÑ¡Γ¿Σ¿¬áΓ«αδ (K&R 2.2)............................... 5
- 1.3. è½ετÑóδÑ ß½«óá (K&R 2.3)............................... 5
- 1.4. è«¡ßΓá¡Γδ (K&R 2.4).................................... 6
- 1.4.1. ûѽδÑ ¬«¡ßΓá¡Γδ (K&R 2.4.1).......................... 6
- 1.4.2. 濼ó«½∞¡δÑ ¬«¡ßΓá¡Γδ (K&R 2.4.3)..................... 7
- 1.4.3. è«¡ßΓá¡Γδ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐ (K&R 2.4.4)............. 7
- 1.5. æΓ᫬¿ (K&R 2.5)....................................... 8
- 1.6. çáó¿ß¿¼«ßΓ∞ «Γ ¼áΦ¿¡δ (K&R 2.6)........................ 8
- 1.7. ÅαÑ«íαẫóá¡¿∩ (K&R 6)................................. 9
- 1.7.1. Char, int ¿ enum (K&R 6.1)........................... 9
- 1.7.2. ô¬áºáΓѽ¿ (K&R 6.4).................................. 9
- 1.7.3. Çα¿Σ¼ÑΓ¿τÑ߬¿Ñ »αÑ«íαẫóá¡¿∩ (K&R 6.6).............. 9
- 1.8. Ä»ÑαáΓ«αδ (K&R 7.2)....................................10
- 1.9. æ»Ñµ¿Σ¿¬áµ¿¿ Γ¿»«ó (K&R 8.2)...........................10
- 1.9.1. Æ¿» enum.............................................11
- 1.9.2. Æ¿» void.............................................11
- 1.9.3. ç¡á¬«óδ⌐ ¼«ñ¿Σ¿¬áΓ«α.................................12
- 1.9.4. î«ñ¿Σ¿¬áΓ«α const....................................12
- 1.9.5. î«ñ¿Σ¿¬áΓ«α volatile.................................13
- 1.9.6. î«ñ¿Σ¿¬áΓ«αδ cdecl ¿ pascal..........................13
- 1.9.6.1. pascal.............................................14
- 1.9.6.2. cdecl..............................................14
- 1.9.7. î«ñ¿Σ¿¬áΓ«αδ near, far ¿ huge........................14
- 1.10. æΓαπ¬Γπαδ ¿ «íΩÑñ¿¡Ñ¡¿∩ (K&R 8.5)......................15
- 1.10.1. éδαáó¡¿óá¡¿Ñ ß½«ó....................................16
- 1.10.2. ü¿Γ«óδÑ »«½∩.........................................16
- 1.11. Ä»ÑαáΓ«αδ (K&R 9)......................................17
- 1.12. Ä»αÑñѽѡ¿Ñ ó¡ÑΦ¡¿σ Σπ¡¬µ¿⌐ (K&R 10.1).................17
- 1.12.1. î«ñ¿Σ¿¬áΓ«αδ Γ¿»á Σπ¡¬µ¿¿ (K&R 10.1.1)...............17
- 1.12.1.1. î«ñ¿Σ¿¬áΓ«α Σπ¡¬µ¿¿ pascal.........................17
- 1.12.1.2. î«ñ¿Σ¿¬áΓ«α Σπ¡¬µ¿¿ cdecl..........................18
- 1.12.1.3. î«ñ¿Σ¿¬áΓ«α Σπ¡¬µ¿¿ interrupt......................18
- 1.12.1.4. Åα«Γ«Γ¿»δ Σπ¡¬µ¿⌐ (K&R 10.1.2).....................19
- 1.13. Åαáó¿½á ó¿ñ¿¼«ßΓ¿ (K&R 11).............................23
- 1.14. 諼á¡ñδ π»αáó½Ñ¡¿∩ Γαá¡ß½∩µ¿Ñ⌐ (R&K 12)................23
- 1.14.1. çá¼Ñ¡á ½Ñ¬ßѼ (K&R 12.1).............................23
- 1.14.2. 鬽ετÑ¡¿Ñ Σá⌐½á (K&R 12.2)...........................24
- 1.14.3. ôß½«ó¡á∩ ¬«¼»¿½∩µ¿∩ (K&R 12.3).......................25
- 1.14.4. ô»αáó½Ñ¡¿Ñ ßΓα«¬á¼¿ (K&R 12.4).......................26
- 1.14.5. ä¿αÑ¬Γ¿óá «íαáí«Γ¬¿ «Φ¿í«¬ (ANSI C 3.8.5)............26
- 1.14.6. ä¿αÑ¬Γ¿óá PRAGMA (ANSI C 3.8.6)......................26
- 1.14.6.1. #pragma inline.....................................27
-
- - 4 -
-
-
-
-
- 1.14.6.2. #pragma warn.......................................27
- 1.14.7. ìπ½Ñóá∩ ñ¿αÑ¬Γ¿óá (ANSI C 3.7).......................27
- 1.14.8. éßΓα«Ñ¡¡δÑ ¼á¬α«-¿¼Ñ¡á...............................28
- 1.14.9. éßΓα«Ñ¡¡δÑ ¼á¬α«ßδ Turbo-C...........................28
-
- 2. î«ñѽ¿ »á¼∩Γ¿ Turbo-C.....................................30
-
- 2.1. êß»«½∞º«óá¡¿Ñ ß¼ÑΦá¡¡δσ ¼«ñѽÑ⌐ »á¼∩Γ¿:
- ¼«ñ¿Σ¿¬áΓ«αδ áñαÑßᵿ¿.................................30
-
- 3. êß»«½∞º«óá¡¿Ñ αẽ¿τ¡δσ ∩ºδ¬«ó »α«úαá¼¼¿α«óá¡¿∩...........32
-
- 3.1. æ¼ÑΦÑ¡¿Ñ ∩ºδ¬«ó »α«úαá¼¼¿α«óá¡¿∩: ¿¡ΓÑαΣÑ⌐ß............32
- 3.1.1. ū߽Ññ«óáΓѽ∞¡«ßΓ¿ »ÑαÑñáτ¿ »áαá¼ÑΓα«ó: C ¿
- Åá߬á½∞..............................................32
- 3.1.1.1. C-»«ß½Ññ«óáΓѽ∞¡«ßΓ∞ »ÑαÑñáτ¿ »áαá¼ÑΓα«ó
- (ß«ú½áΦÑ¡¿Ñ ó맮óá)................................32
- 3.1.1.2. Åá߬á½Ñó߬á∩ »«ß½Ññ«óáΓѽ∞¡«ßΓ∞ »ÑαÑñáτ¿
- »áαá¼ÑΓα«ó (ß«ú½áΦÑ¡¿Ñ ó맮óá).....................33
- 3.1.2. ê¡ΓÑαΣÑ⌐ß ß áßßѼí½Ñα«¼..............................35
- 3.1.2.1. ÄíαáΘÑ¡¿∩ ¬ Σá⌐½á¼ .ASM ¿º Turbo-C.................35
- 3.1.2.2. Ä»αÑñѽѡ¿Ñ ¬«¡ßΓá¡Γ ¿ »ÑαѼѡ¡δσ..................36
- 3.1.2.3. Ä»αÑñѽѡ¿Ñ ú½«íá½∞¡δσ ¿ ó¡ÑΦ¡¿σ
- ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó....................................37
- 3.1.3. ÄíαáΘÑ¡¿∩ ¬ Turbo-C ¿º Σá⌐½á .ASM....................37
- 3.1.3.1. æßδ½¬á ¡á Σπ¡¬µ¿¿..................................37
- 3.1.3.2. æßδ½¬á ¡á ñá¡¡δÑ...................................38
- 3.1.4. éßΓα«Ñ¡¡δ⌐ áßßѼí½Ñα.................................38
- 3.1.4.1. æß佬¿ ¡á ñá¡¡δÑ ¿ Σπ¡¬µ¿¿ ¿º óßΓα«Ñ¡¡«ú«
- áßßѼí½Ñαá.........................................40
- 3.1.4.2. êß»«½∞º«óá¡¿Ñ ßΓαπ¬Γπα.............................40
- 3.1.4.3. êß»«½∞º«óá¡¿Ñ ¬«¼á¡ñ »ÑαÑσ«ñá ¿ ¼ÑΓ«¬..............41
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - 5 -
-
-
-
-
- 1. ÄÆïêùêƒ Turbo-C «Γ K&R
-
-
-
-
-
- Turbo-C »«ññÑনóáÑΓ ¡Ñ Γ«½∞¬« «»αÑñѽѡ¿∩, ñá¡¡δÑ ó K&R,
- ¡« ¿ í«½∞Φ¿¡ßΓó« αáßΦ¿αÑ¡¿⌐ ANSI-ßΓá¡ñáαΓá. é ñá¡¡«¼ αáºñѽÑ
- »α¿óÑñÑ¡δ ñ«»«½¡Ñ¡¿∩ ¬ K&R; ßß佬¿ ñá¡δ ¡á ß««ΓóÑΓßΓóπεΘ¿Ñ αáº-
- ñÑ½δ »α¿½«ªÑ¡¿∩ "æ»αáó«τ¡«Ñ απ¬«ó«ñßΓó« »« ∩ºδ¬π C".
-
-
- 1.1. 諼¼Ñ¡Γáα¿¿ (K&R 2.1)
-
-
- ä«»π߬áεΓß∩ 󽫪ѡ¡δÑ ¬«¼¼Ñ¡Γáα¿¿. é φΓ«¼ ß½πτáÑ »α«úαá¼¼á
- ñ«½ª¡á ¬«¼»¿½¿α«óáΓ∞ß∩ ß Σ½áú«¼ -C. ä½∩ «íÑß»ÑτÑ¡¿∩ ¼«í¿½∞¡«ßΓ¿
- πñ«í¡ÑÑ «Γ¼ÑτáΓ∞ ¬«ñ, ¬«Γ«αδ⌐ ñ«½ªÑ¡ íδΓ∞ ºá¬«¼¼Ñ¡Γ¿α«óá¡, ñ¿-
- αÑ¬Γ¿óἿ #if 0 ¿ #endif.
-
-
- 1.2. êñÑ¡Γ¿Σ¿¬áΓ«αδ (K&R 2.2)
-
-
- é ¿ñÑ¡Γ¿Σ¿¬áΓ«αáσ ñ«»π߬áÑΓß∩ º¡á¬ $. Äñ¡á¬« ¿ñÑ¡Γ¿Σ¿¬áΓ«α
- ¼«ªÑΓ ¡áτ¿¡áΓ∞ß∩ Γ«½∞¬« ß íπ¬óδ ¿½¿ ß¿¼ó«½á (_). ç¡áτáΘ¿¼¿ ∩ó-
- ½∩εΓß∩ »ÑαóδÑ 32 ß¿¼ó«½á ¿ñÑ¡Γ¿Σ¿¬áΓ«αá. ä½∩ ¿º¼Ñ¡Ñ¡¿∩ τ¿ß½á
- º¡áτáΘ¿σ ß¿¼ó«½«ó ¼«ª¡« ¿ß»«½∞º«óáΓ∞ »α¿ ¬«¼»¿½∩µ¿¿ «»µ¿ε -i#.
-
- 32 ß¿¼ó«½á ∩ó½∩εΓß∩ º¡áτáΘ¿¼¿ ¿ ñ½∩ ú½«íá½∞¡δσ ¿ñÑ¡Γ¿Σ¿¬á-
- Γ«α«ó, íÑαπΘ¿σß∩ ¿º ñαπú¿σ ¼«ñπ½Ñ⌐.
-
-
- 1.3. è½ετÑóδÑ ß½«óá (K&R 2.3)
-
-
- ì¿ªÑ »α¿óÑñÑ¡δ ¬½ετÑóδÑ ß½«óá, ºáαѺÑαó¿α«óá¡¡δÑ Turbo-C
- (TC) ¿ αáßΦ¿αÑ¡¿∩¼¿ ANSI-ßΓá¡ñáαΓá (AN). äá¡¡δÑ ß½«óá ¡Ñ ¼«úπΓ
- íδΓ∞ ¿ß»«½∞º«óá¡δ ó ¬áτÑßΓóÑ ¿¼Ñ¡ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó. è½ετÑóδÑ
- ß½«óá entry ¿ fortran, π»«¼∩¡πΓδÑ ó K&R, ¡Ñ ¿ß»«½∞ºπεΓß∩ ó Tur-
- bo-C.
-
- TC asm TC _cs TC _DH
- TC cdecl TC _ds TC _DL
- AN const TC _es TC _DX
- AN enum TC _ss TC _BP
- TC far TC _AH TC _DI
- TC huge TC _AL TC _SI
- TC interrupt TC _AX TC _SP
- TC near TC _BH
- TC pascal TC _BL
- AN signed TC _CH
- AN void TC _CL
- AN volatile TC _CX
-
- - 6 -
-
-
-
-
- 1.4. è«¡ßΓá¡Γδ (K&R 2.4)
-
-
- Turbo-C »«ññÑনóáÑΓ óßÑ Γ¿»δ ¬«¡ßΓá¡Γ, «»αÑñѽѡ¡δÑ ó
- K&R, ß ¡Ñ¬«Γ«α묨 αáßΦ¿αÑ¡¿∩¼¿.
-
-
- 1.4.1. ûѽδÑ ¬«¡ßΓá¡Γδ (K&R 2.4.1)
-
-
- ä ä«»π߬áεΓß∩ ñÑß∩Γ¿τ¡δÑ ¬«¡ßΓá¡Γδ ó ñ¿á»áº«¡Ñ
- 0...4294967295. (ÄΓα¿µáΓѽ∞¡δÑ ¬«¡ßΓá¡Γδ αáßß¼áΓα¿óáεΓß∩ ¬á¬
- íѺº¡á¬«óδÑ, ¬ ¬«Γ«αδ¼ »α¿¼Ñ¡Ñ¡ π¡áα¡δ⌐ «»ÑαáΓ«α "¼¿¡πß".
-
- æπΣΣ¿¬ß U (¿½¿ u), «º¡áτáÑΓ τΓ« ¬«¡ßΓá¡Γá ¿¼ÑÑΓ Γ¿» unsig-
- ned. è«¡ßΓá¡Γá íπñÑΓ ¿¼ÑΓ∞ Γ¿» unsigned long, Ñß½¿ ÑÑ º¡áτÑ¡¿Ñ
- íπñÑΓ »αÑóδΦáΓ∞ 65535, ¡Ñºáó¿ß¿¼« «Γ ¿ß»«½∞ºπѼ«ú« «ß¡«óá¡¿∩.
-
- Å_α_¿_¼_Ñ_τ_á_¡_¿_Ñ. ¡« ¿ß»«½∞º«óáΓ∞ ¬á¬ L, Γᬠ¿ U ßπΣΣ¿¬ßδ
- ñ½∩ «ñ¡«⌐ ¿ Γ«⌐ ªÑ ¬«¡ßΓá¡Γδ.
-
-
- Æáí½¿µá 1
-
- ûѽδÑ ¬«¡ßΓá¡Γδ Turbo-C (íѺ L ¿½¿ U)
-
- ------------------------------------------------------
- ä¿á»áº«¡ Æ¿»
- ------------------------------------------------------
- ________ñÑß∩Γ¿τ¡δÑ_¬«¡ßΓá¡Γδ_________
- 0-32767 int
- 32767-2147483647 long
- 2147483648-4294967295 unsigned long
- >4294967295 íπñÑΓ »ÑαÑ»«½¡Ñ¡¿Ñ
- íѺ »αÑñπ»αѪñÑ¡¿∩;
- ó αѺπ½∞ΓáΓ íπñπΓ
- ºá»¿ßá¡δ ¼½áñΦ¿Ñ í¿Γδ
- ñÑ⌐ßΓó¿Γѽ∞¡«ú« αѺπ½∞ΓáΓá
- ________ó«ß∞¼Ñα¿τ¡δÑ_¬«¡ßΓá¡Γδ________
- 00-077777 int
- 0100000-0177777 unsigned int
- 01000000-017777777777 long
- 010000000000-0377777777777 unsigned long
- >0377777777777 íπñÑΓ »ÑαÑ»«½¡Ñ¡¿Ñ
- ________ΦÑßΓ¡áñµáΓÑα¿τ¡δÑ_¬«¡ßΓá¡Γδ_________
- 0x0000-0x7FFF int
- 0x8000-0xFFFF unsigned int
- 0x10000-0x7FFFFFFF long
- 0x80000000-0xFFFFFFFF unsigned long
- >0xFFFFFFFF íπñÑΓ »ÑαÑ»«½¡Ñ¡¿Ñ
-
-
-
-
-
- - 7 -
-
-
-
-
- 1.4.2. 濼ó«½∞¡δÑ ¬«¡ßΓá¡Γδ (K&R 2.4.3)
-
-
- éßÑ ¬«¡ßΓá¡Γδ »αÑñßΓáó½∩εΓß∩ 16-í¿Γ«ó«⌐ óѽ¿τ¿¡«⌐ Γ¿»á
- int.
-
- Turbo-C »«ññÑনóáÑΓ ANSI-αáßΦ¿αÑ¡¿Ñ, ñ«»π߬áεΘÑÑ ΦÑßΓ¡áñ-
- µáΓÑα¿τ¡«Ñ »αÑñßΓáó½Ñ¡¿Ñ ¬«ñ«ó ß¿¼ó«½«ó. ìá»α¿¼Ñα, '\x1F' ¿½¿
- '\x82'.
-
- èα«¼Ñ Γ«ú«, »«ññÑনóáÑΓß∩ ñαπú«Ñ ANSI-αáßΦ¿αÑ¡¿Ñ, ñ«»πß-
- ¬áεΘÑÑ ESC-»«ß½Ññ«óáΓѽ∞¡«ßΓ¿. äá¡¡δ⌐ ß»¿ß«¬ ESC-»«ß½Ññ«óáΓѽ∞-
- ¡«ßΓÑ⌐ »αÑñßΓáó½∩ÑΓ ß«í«⌐ ñ«»«½¡Ñ¡¿Ñ ß»¿ß¬á, »α¿óÑñÑ¡¡«ú« ó
- K&R.
-
-
- Æáí½¿µá 2
-
- ESC-»«ß½Ññ«óáΓѽ∞¡«ßΓ¿ Turbo-C
-
- ------------------------------------------------------
- ū߽Ññ«óáΓѽ∞¡«ßΓ∞ è«ñ æ¿¼ó«½ Åα¿¼Ñτá¡¿Ñ
- ------------------------------------------------------
- \a 0x07 BEL âπñ«¬
- \v 0x0B VT éÑαΓ¿¬á½∞¡á∩
- Γáíπ½∩µ¿∩
- \" 0x22 " äó«⌐¡á∩ ¬áóδτ¬á
- \? 0x3F ?
- \DDD ½εí«⌐ Γ«ªÑ, τΓ« /ddd ó K&R
- \xHHH 0xHHH ½εí«⌐ HHH=1,2 ¿½¿ 3
- ΘÑßΓ¡áñµáΓÑα¿τ¡δÑ
- µ¿Σαδ
-
- Å_α_¿_¼_Ñ_τ_á_¡_¿_Ñ. Æ.¬. Turbo-C ñ«»π߬áÑΓ ñóπσß¿¼ó«½∞¡δÑ
- ¬«¡ßΓá¡Γδ, ¼«ªÑΓ ó«º¡¿¬¡πΓ∞ ñóπß¼δ߽ѡ¡«ßΓ∞, Ñß½¿ ó«ß∞¼Ñα¿τ¡á∩
- ESC-»«ß½Ññ«óáΓѽ∞¡«ßΓ∞ ¼Ñ¡∞ΦÑ τѼ ¿º ΓαÑσ µ¿Σα »αÑñΦÑßΓóπÑΓ
- µ¿ΣαÑ. é Γᬿσ ß½πτá∩σ, Turbo-C íπñÑΓ »αÑñ»«½áúáΓ∞, τΓ« ß½Ññπε-
- Θ¿⌐ ß¿¼ó«½ - τáßΓ∞ ESC-»«ß½Ññ«óáΓѽ∞¡«ßΓ¿, ñáªÑ Ñß½¿ ß¿¼ó«½ ¡Ñ
- ñ«»π߬áÑΓß∩ ñ½∩ ñá¡¡«ú« Γ¿»á τ¿ßѽ. ìá»α¿¼Ñα, ¬«¡ßΓá¡Γá \258
- íπñÑΓ ¿¡ΓÑα»αÑΓ¿α«óáΓ∞ß∩ ¬á¬ ñóπσß¿¼ó«½∞¡á∩ ¬«¡ßΓá¡Γá, ß«ßΓ«∩-
- Θá∩ ¿º ß¿¼ó«½«ó \25 ¿ 8.
-
-
- 1.4.3. è«¡ßΓá¡Γδ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐ (K&R 2.4.4)
-
-
- éßÑ ¬«¡ßΓá¡Γδ, «»αÑñѽѡ¡δÑ ¬á¬ double, »αÑñßΓáó½∩εΓ ß«í«⌐
- ¬«¡ßΓá¡Γδ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐. Äñ¡á¬«, ¬«¡ßΓá¡Γá ß »½áóáεΘÑ⌐
- Γ«τ¬«⌐ ¼«ªÑΓ ¿¼ÑΓ∞ Γ¿» float; ¡Ñ«íσ«ñ¿¼« ñ«íáó½∩Γ∞ ßπΣΣ¿¬ß F
- ¿½¿ f ¬ ÑÑ º¡áτÑ¡¿ε.
-
-
-
-
-
- - 8 -
-
-
-
-
- 1.5. æΓ᫬¿ (K&R 2.5)
-
-
- Turbo-C ñ«»π߬áÑΓ ¼¡«ú«ßΓ᫬«óδÑ φ½Ñ¼Ñ¡Γδ ó ß¿¼ó«½∞¡δσ
- ¬«¡ßΓá¡Γáσ; ßΓ᫬«óá∩ ¬«¡ßΓá¡Γá íπñÑΓ »αÑñßΓáó½∩Γ∞ ß«í«⌐ «íΩÑ-
- ñ¿¡Ñ¡¿Ñ φ½Ñ¼Ñ¡Γ«ó.
-
- ìá»α¿¼Ñα,
-
- main()
- {
- char *p;
- p="äá¡¡á∩ »α«úαá¼¼á - »α¿¼Ñα Γ«ú«, ¬á¬ Turbo-C"
- "íπñÑΓ áóΓ«¼áΓ¿τÑ߬¿\n«ßπΘÑßΓó½∩Γ∞ «íΩÑñ¿¡Ñ¡¿Ñ"
- "ßΓ᫬ ó «τÑ¡∞ ñ½¿¡¡πε ßΓ᫬π;\n"
- "Γá¬á∩ ßΓαπ¬Γπαá ¿ß»«½∞ºπÑΓß∩ ñ½∩ í«½∞ΦÑ⌐"
- "¡áú½∩ñ¡«ßΓ¿ »α«úαá¼¼δ.\n"
- }
-
-
- 1.6. çáó¿ß¿¼«ßΓ∞ «Γ ¼áΦ¿¡δ (K&R 2.6)
-
-
-
- Æáí½¿µá 3
-
- 滿߫¬ αẽ¿τ¡δσ Γ¿»«ó ñá¡¡δσ ñ½∩ Turbo-C
-
- ------------------------------------------------------
- Æ¿» ÉẼÑα(ó í¿Γáσ) ä¿á»áº«¡
- ------------------------------------------------------
- unsigned char 8 0-255
- char 8 -128-127
- enum 16 -32768-32767
- unsigned short 16 0-65535
- short 16 -32768-32767
- unsigned int 16 0-65535
- int 16 -32768-32767
- unsigned long 32 0-4294967295
-
- long 32 -2147483648-2147483647
-
- float 32 3.4E-38-3.4E+38
- double 64 1.7E-308-1.7E+308
- long double 64 1.7E-308-1.7E+308
-
- pointer 16 (near, _cs, _ds, _ss)
- pointer 32 (far, huge)
-
- Å_α_¿_¼_Ñ_τ_á_¡_¿_Ñ. Æ¿» long double ñ«»π߬áÑΓß∩, ¡« αáßß¼áΓα¿-
- óáÑΓß∩ ¬á¬ double.
-
-
-
-
- - 9 -
-
-
-
-
- 1.7. ÅαÑ«íαẫóá¡¿∩ (K&R 6)
-
-
-
- 1.7.1. Char, int ¿ enum (K&R 6.1)
-
-
- ÅαÑ«íαẫóá¡¿Ñ ß¿¼ó«½∞¡«⌐ ¬«¡ßΓá¡Γδ ¬ µÑ½«¼π ¿¼ÑÑΓ αѺπ½∞-
- ΓáΓ«¼ 16-í¿Γ«ó«Ñ º¡áτÑ¡¿Ñ. ÅαÑ«íαẫóá¡¿Ñ ß¿¼ó«½∞¡«ú« «íΩѬΓá
- (»ÑαѼѡ¡«⌐) ¬ µÑ½«τ¿ß½Ñ¡¡«¼π «íΩѬΓπ ¿¼ÑÑΓ αѺπ½∞ΓáΓ«¼ áóΓ«¼á-
- Γ¿τÑ߬«Ñ º¡á¬«ó«Ñ αáΦ¿αÑ¡¿Ñ, Ñß½¿ óδ ßñѽ὿ »« π¼«½τá¡¿ε Γ¿»
- char íѺº¡á¬«óδ¼ (¿ß»«½∞ºπ∩ »α¿ ¬«¼»¿½∩µ¿¿ «»µ¿ε -K). ÄíΩѬΓδ
- Γ¿»á signed char óßÑúñá ¿ß»«½∞ºπεΓ º¡á¬«ó«Ñ αáßΦ¿αÑ¡¿Ñ; «íΩѬΓδ
- Γ¿»á unsigned char óßÑúñá πßΓá¡áó½¿óáεΓ ßΓáαΦ¿⌐ í¿Γ ó ¡π½∞,
- ¬«úñá »αÑ«íαáºπεΓß∩ ó int.
-
- ç¡áτÑ¡¿∩ Γ¿»á enum »αÑ«íαáºπεΓß∩ ó int íѺ ¼«ñ¿Σ¿¬áµ¿¿;
- á¡á½«ú¿τ¡« Γ¿» int »αÑ«íαáºπÑΓß∩ ó »ÑαÑτ¿ß½¿¼δ⌐ Γ¿».
-
-
- 1.7.2. ô¬áºáΓѽ¿ (K&R 6.4)
-
-
- ô¬áºáΓѽ¿, ¿ß»«½∞ºπѼδÑ »α«úαá¼¼«⌐, ¼«úπΓ íδΓ∞ αẽ¿τ¡δσ
- αẼÑα«ó, ó ºáó¿ß¿¼«ßΓ¿ «Γ ¿ß»«½∞ºπѼ«⌐ ¼«ñѽ¿ »á¼∩Γ¿.
- ìá»α¿¼Ñα, ¬«úñá óδ ¬«¼»¿½¿απÑΓÑ »α«úαá¼¼π, ¿ß»«½∞ºπ∩ ߻ѵ¿á½∞-
- ¡πε ¼«ñѽ∞ »á¼∩Γ¿, áñαÑßπѼδÑ ¼«ñ¿Σ¿¬áΓ«αδ (¿¡ñѬߡδÑ αÑú¿ßΓαδ)
- (near, huge, far, _cs, _ds, _ss, _es) ¼«úπΓ ¡Ñ »α¿¡¿¼áΓ∞ ó«
- ó¡¿¼á¡¿Ñ αẼÑα π¬áºáΓѽ∩, ºáñá¡¡δ⌐ ñá¡¡«⌐ ¼«ñѽ∞ε »á¼∩Γ¿.
-
- ô¬áºáΓѽ∞ ñ«½ªÑ¡ íδΓ∞ «íΩ∩ó½Ñ¡ ¬á¬ π¬áºáΓѽ∞ ¡á ¡Ñ¬«Γ«αδ⌐
- ߻ѵ¿á½∞¡δ⌐ Γ¿», ñáªÑ Ñß½¿ ñá¡¡δ⌐ Γ¿» - void (¬«Γ«αδ⌐ ó ñÑ⌐ßΓ-
- ó¿Γѽ∞¡«ßΓ¿ «º¡áτáÑΓ π¬áºáΓѽ∞ ¡á ¡¿τÑú«). Äñ¡á¬«, íπñπτ¿
- «íΩ∩ó½Ñ¡, π¬áºáΓѽ∞ ¼«ªÑΓ π¬áºδóáΓ∞ ¡á «íΩÑ¬Γ ½εí«ú« ñαπú«ú«
- Γ¿»á. Turbo-C »«ºó«½∩ÑΓ »ÑαѡạáτáΓ∞ π¬áºáΓѽ¿, ¡« ¬«¼»¿½∩Γ«α
- íπñÑΓ »αÑñπ»αѪñáΓ∞, τΓ« »α«¿º«Φ½« »ÑαѡạáτÑ¡¿Ñ π¬áºáΓѽ∩ -
- Ñß½¿ π¬áºáΓѽ∞ ¡Ñ íδ½ »Ñαó«¡áτá½∞¡« «»αÑñѽѡ ¬á¬ π¬áºáΓѽ∞ ¡á
- Γ¿» void. Äñ¡á¬« π¬áºáΓѽ¿ ¡á Γ¿»δ ñá¡¡δσ ¡Ñ ¼«úπΓ íδΓ∞ »αÑ«í-
- αẫóá¡δ ¬ π¬áºáΓѽ∩¼ ¡á Γ¿»δ Σπ¡¬µ¿⌐, ¿ ¡á«í«α«Γ.
-
-
- 1.7.3. Çα¿Σ¼ÑΓ¿τÑ߬¿Ñ »αÑ«íαẫóá¡¿∩ (K&R 6.6)
-
-
- ÅαÑ«íαẫóá¡¿Ñ «»Ñαá¡ñ«ó ó áα¿Σ¼ÑΓ¿τÑ߬¿σ óδαáªÑ¡¿∩σ
- óδ»«½¡∩ÑΓß∩ »« ß½ÑñπεΘ¿¼ »αáó¿½á¼:
-
- 1) ïεí«⌐ ¡Ñ-integer ¿ ¡Ñ-double Γ¿» »αÑ«íαáºπÑΓß∩ ¬á¬ »«¬á-
- ºá¡« ó Γáí½¿µÑ, »α¿óÑñÑ¡¡«⌐ ¡¿ªÑ.
-
- 2) àß½¿ ¬á¬«⌐-½¿í« ¿º «»Ñαá¡ñ«ó ¿¼ÑÑΓ Γ¿» double, ñαπú«⌐
- «»Ñαá¡ñ Γ«ªÑ »αÑ«íαáºπÑΓß∩ ó double.
-
-
-
- - 10 -
-
-
-
-
- 3) àß½¿ ¬á¬«⌐-½¿í« ¿º «»Ñαá¡ñ«ó ¿¼ÑÑΓ Γ¿» unsigned long,
- ñαπú«⌐ «»Ñαá¡ñ Γ«ªÑ »αÑ«íαáºπÑΓß∩ ó unsigned long.
-
- 4) àß½¿ ¬á¬«⌐-½¿í« ¿º «»Ñαá¡ñ«ó ¿¼ÑÑΓ Γ¿» unsigned, ñαπú«⌐
- «»Ñαá¡ñ Γ«ªÑ »αÑ«íαáºπÑΓß∩ ó unsigned.
-
-
- Æáí½¿µá 4
-
- îÑΓ«ñδ áα¿Σ¼ÑΓ¿τÑ߬¿σ »αÑ«íαẫóá¡¿⌐
-
- ------------------------------------------------------
- ÉѺπ½∞ΓáΓ
- Æ¿» »αÑ«íαẫóá¡¿∩ îÑΓ«ñ
- ------------------------------------------------------
- char int º¡á¬«óδ⌐
- unsigned char int ¡π½Ñó«⌐ ßΓáαΦ¿⌐ íá⌐Γ
- (óßÑúñá)
- signed char int º¡á¬«óδ⌐ (óßÑúñá)
- short int Ñß½¿ íѺº¡á¬«óδ⌐,
- Γ« íѺº¡á¬«óδ⌐ int
- enum int Γá ªÑ óѽ¿τ¿¡á
- float double ¼á¡Γ¿ßßá ñ«»«½¡∩ÑΓß∩ 0
-
-
- 1.8. Ä»ÑαáΓ«αδ (K&R 7.2)
-
-
- Turbo-C »«ññÑনóáÑΓ π¡áα¡δ⌐ «»ÑαáΓ«α +. Äíδτ¡« Turbo-C
- «ßπΘÑßΓó½∩ÑΓ »ÑαÑúαπ»»¿α«ó¬π óδαáªÑ¡¿⌐, »ÑαÑπ»«α∩ñ«τ¿óá∩ ¬«¼¼π-
- ΓáΓ¿ó¡δÑ «»ÑαáΓ«αδ (Γá¬¿Ñ ¬á¬ * ¿ ñó«¿τ¡δ⌐ +), »δΓá∩ß∞ ß«ºñáΓ∞
- óδαáªÑ¡¿∩ φΣΣÑ¬Γ¿ó¡δÑ »α¿ ¬«¼»¿½∩µ¿¿. Äñ¡á¬« Turbo-C ¡Ñ íπñÑΓ
- »ÑαÑ«αúá¡¿º«óδóáΓ∞ óδαáªÑ¡¿∩ ß π¡áα¡δ¼ «»ÑαáΓ«α«¼ +. æ½Ññ«óá-
- Γѽ∞¡«, óδ ¼«ªÑΓÑ ¬«¡Γα«½¿α«óáΓ∞ óδτ¿ß½Ñ¡¿∩ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐,
- Γ.Ñ. «Γ½áó½¿óáΓ∞ «Φ¿í¬¿ Γ«τ¡«ßΓ¿ ¿ »ÑαÑ»«½¡Ñ¡¿∩, ¿ß»«½∞ºπ∩
- π¡áα¡δ⌐ «»ÑαáΓ«α +, ¿ »α¿ φΓ«¼ ¡Ñ αáºí¿óá∩ µÑ½«Ñ óδαáªÑ¡¿Ñ ¡á
- «Γñѽ∞¡δÑ óδαáªÑ¡¿∩. ìá»α¿¼Ñα, àß½¿ a, b, c ¿ f ¿¼ÑεΓ Γ¿»
- float, óδαáªÑ¡¿Ñ
-
- f=a++(b+c)
-
- íπñÑΓ óδτ¿ß½∩Γ∞ß∩ ß½ÑñπεΘ¿¼ «íαẫ¼: αѺπ½∞ΓáΓ (b+c) íπñÑΓ »α¿-
- íáó½Ñ¡ ¬ a.
-
-
- 1.9. æ»Ñµ¿Σ¿¬áµ¿¿ Γ¿»«ó (K&R 8.2)
-
-
- Turbo-C »«ññÑনóáÑΓ ß½ÑñπεΘ¿Ñ «ß¡«ó¡δÑ Γ¿»δ, ¡Ñ π¬áºá¡¡δÑ
- ó K&R.
-
- - unsigned char
-
- - unsigned short
-
- - 11 -
-
-
-
-
- - unsigned long
-
- - long double
-
- - enumeration
-
- - viod
-
- Æ¿» long double φ¬ó¿óá½Ñ¡ΓÑ¡ Γ¿»π double.
-
-
- 1.9.1. Æ¿» enum
-
-
- Turbo-C »«ññÑনóáÑΓ óßÑ »ÑαÑτ¿ß½¿¼δÑ Γ¿»δ ANSI-ßΓá¡ñáαΓá.
- ÅÑαÑτ¿ß½¿¼δ⌐ Γ¿» ñá¡¡δσ ¿ß»«½∞ºπÑΓß∩ ñ½∩ «»¿ßá¡¿∩ ñ¿ß¬αÑΓ¡«⌐
- »«ß½Ññ«óáΓѽ∞¡«ßΓ¿ µÑ½δσ º¡áτÑ¡¿⌐. ìá»α¿¼Ñα,
-
- enum days { sun, mon, tues, wed, thur, fri, sat};
-
- ê¼Ñ¡á, ºá¡ÑßÑ¡¡δÑ ó days, »αÑñßΓáó½∩εΓ ß«í«⌐ µÑ½δÑ ¬«¡ß-
- Γá¡Γδ, »Ñαóá∩ (sun) áóΓ«¼áΓ¿τÑ߬¿ πßΓá¡«ó½Ñ¡á ó ¡π½∞ ¿ ¬áªñá∩
- ß½ÑñπεΘá∩ ¿¼ÑÑΓ º¡áτÑ¡¿Ñ ¡á Ññ¿¡¿µπ í«½∞ΦÑ, τѼ »αÑñδñπΘá∩
- (mon=1, tues=2 ¿ Γ.ñ.). ¡« »α¿ßó«¿Γ∞ ¬«¡ßΓá¡Γá¼ «»αÑñѽѡ¡δÑ
- º¡áτÑ¡¿∩; ¿¼Ñ¡á, ¡Ñ ¿¼ÑεΘ¿Ñ «»αÑñѽѡ¡δσ º¡áτÑ¡¿⌐, íπñπΓ, ¬á¬ ¿
- αá¡∞ΦÑ, ¿¼ÑΓ∞ º¡áτÑ¡¿∩ »αÑñδñπΘ¿σ ¬«ßΓá¡Γ, πóѽ¿τÑ¡¡δÑ ¡á Ññ¿-
- ¡¿µπ. ìá»α¿¼Ñα,
-
- enum coins {penny=1, nickle=5, dime=10, quarter=25};
-
- ÅÑαѼѡ¡«⌐ »ÑαÑτ¿ß½¿¼«ú« Γ¿»á ¼«ªÑΓ íδΓ∞ »α¿ßó«Ñ¡« º¡áτÑ-
- ¡¿Ñ ½εí«ú« Γ¿»á int - »α«óÑα¬á Γ¿»á ¡Ñ »α«¿ºó«ñ¿Γß∩.
-
-
- 1.9.2. Æ¿» void
-
-
- Turbo-C »«ññÑনóáÑΓ Γ¿» void, «»αÑñѽѡ¡δ⌐ ó ANSI-ßΓá¡-
- ñáαΓÑ. äá¡¡δ⌐ Γ¿» ¿ß»«½∞ºπÑΓß∩ ñ½∩ ∩ó¡«ú« «»¿ßá¡¿∩ Σπ¡¬µ¿⌐, ¡Ñ
- ó«ºóαáΘáεΘ¿σ º¡áτÑ¡¿⌐. ǡὫú¿τ¡«, »πßΓ«⌐ ß»¿ß«¬ »áαá¼ÑΓα«ó ¼«-
- ªÑΓ íδΓ∞ «íΩ∩ó½Ñ¡ ß½«ó«¼ void. ìá»α¿¼Ñα,
-
- void putmsg(void)
- {
- printf("Hello, world\n");
- }
-
- main()
- {
- putmsg();
- }
-
- ¡« »αÑ«íαẫóδóáΓ∞ óδαáªÑ¡¿Ñ ¬ Γ¿»π void, ñ½∩ Γ«ú«
- τΓ«íδ ∩ó¡« π¬áºáΓ∞, τΓ« º¡áτÑ¡¿Ñ, ó«ºóαáΘáѼ«Ñ Σπ¡¬µ¿Ñ⌐, ¿ú¡«-
-
- - 12 -
-
-
-
-
- α¿απÑΓß∩. ìá»α¿¼Ñα, Ñß½¿ óδ σ«Γ¿ΓÑ »α¿«ßΓá¡«ó¿Γ∞ óδ»«½¡Ñ¡¿Ñ
- »α«úαá¼¼δ ñ« ΓÑσ »«α »«¬á »«½∞º«óáΓѽ∞ ¡Ñ ¡áª¼ÑΓ ¬á¬πε-½¿í«
- ¬½áó¿Φπ, óδ ¼«ªÑΓÑ ¡á»¿ßáΓ∞:
-
- (void) getch();
-
- èα«¼Ñ Γ«ú«, ¼«ª¡« «íΩ∩ó¿Γ∞ π¬áºáΓѽ∞ ¡á «íΩÑ¬Γ Γ¿»á void.
- äá¡¡δ⌐ π¬áºáΓѽ∞ ¡Ñ íπñÑΓ π¬áºáΓѽѼ ¡á ¡¿τÑú«; ß«ºñáßΓß∩ π¬á-
- ºáΓѽ∞ ¡á ¬á¬«⌐-Γ« «íΩÑ¬Γ ñá¡¡δσ, Γ¿» ¬«Γ«α«ú« ¡ÑΓ ¡Ñ«íσ«ñ¿¼«ß-
- Γ¿ «»αÑñѽ∩Γ∞. éδ ¼«ªÑΓÑ »α¿ßóá¿óáΓ∞ ½εí«⌐ π¬áºáΓѽ∞ π¬áºáΓѽε
- Γ¿»á void, ¿ «íαáΓ¡«. Äñ¡á¬« óδ ¡Ñ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ «»ÑαáΓ«α
- ¬«ßóÑ¡¡«⌐ áñαÑßᵿ¿ (*), Γ.¬. ¿ß»«½∞ºπѼδ⌐ Γ¿» ¡Ñ«»αÑñѽѡ.
-
-
- 1.9.3. ç¡á¬«óδ⌐ ¼«ñ¿Σ¿¬áΓ«α
-
-
- èα«¼Ñ π¬áºá¡¡δσ ó K&R ΓαÑσ Γ¿»«ó ¼«ñ¿Σ¿¬áΓ«α«ó - long,
- short ¿ unsigned - Turbo-C »«ññÑনóáÑΓ ÑΘÑ Γα¿: signed, const
- ¿ vilatile (ANSI-ßΓá¡ñáαΓ).
-
- î«ñ¿Σ¿¬áΓ«α signed ∩ó¡« π¬áºδóáÑΓ, τΓ« óѽ¿τ¿¡á ß« º¡á¬«¼.
- äá¡¡δ⌐ ¼«ñ¿Σ¿¬áΓ«α ¿ß»«½∞ºπÑΓß∩ »αÑ¿¼πΘÑßΓóÑ¡¡« ñ½∩ ñ«¬π¼Ñ¡Γ¿-
- α«óá¡¡«ßΓ¿ ¿ ºáóÑαΦÑ¡¡«ßΓ¿ »α«úαá¼¼. Äñ¡á¬«, Ñß½¿ óδ ¬«¼»¿½¿-
- απÑΓÑ »α«úαá¼¼π, ¿ß»«½∞ºπ∩ »« π¼«½τá¡¿ε íѺº¡á¬«óδ⌐ Γ¿» char
- (ó¼ÑßΓ« º¡á¬«ó«ú«), ¡Ñ«íσ«ñ¿¼« ¿ß»«½∞º«óáΓ∞ ¼«ñ¿Σ¿¬áΓ«α signed,
- ñ½∩ Γ«ú« τΓ«íδ «»αÑñѽ¿Γ∞ »ÑαѼѡ¡πε ¿½¿ Σπ¡¬µ¿ε Γ¿»á signed
- char. î«ñ¿Σ¿¬áΓ«α signed, ¿ß»«½∞º«óá¡¡δ⌐ ßá¼ »« ßÑíÑ, «º¡áτáÑΓ
- signed int, Γá¬ªÑ ¬á¬ unsigned «º¡áτáÑΓ unsigned int.
-
-
- 1.9.4. î«ñ¿Σ¿¬áΓ«α const
-
-
- î«ñ¿Σ¿¬áΓ«α const, ¬á¬ «»αÑñѽѡ« ó ANSI-ßΓá¡ñáαΓÑ, ¡Ñ ñ«-
- »π߬áÑΓ ¬á¬¿σ íδ Γ« ¡¿ í佫 »ÑαÑ«»αÑñѽѡ¿⌐ º¡áτÑ¡¿∩ ¬«¡ßΓá¡Γδ
- ¿½¿ ñαπú¿σ ¬«ßóÑ¡¡δσ ñÑ⌐ßΓó¿⌐, Γᬿσ ¬á¬ π¼Ñ¡∞ΦÑ¡¿Ñ ¿½¿ πóѽ¿-
- τÑ¡¿Ñ. ô¬áºáΓѽ∞ ¡á Γ¿» const ¡Ñ ¼«ªÑΓ íδΓ∞ ¿º¼Ñ¡Ñ¡, ó «Γ½¿τ¿¿
- «Γ ßἫú« «íΩѬΓá, ¬«Γ«αδ⌐ «¡ «»αÑñѽ∩ÑΓ.
-
- Å_α_¿_¼_Ñ_τ_á_¡_¿_Ñ. î«ñ¿Σ¿¬áΓ«α const, ¿ß»«½∞ºπѼδ⌐ ßá¼ »« ßÑ-
- íÑ, φ¬ó¿óá½Ñ¡ΓÑ¡ const int. Éáßß¼«Γα¿¼ ß½ÑñπεΘ¿⌐ »α¿¼Ñαδ:
-
- const float pi =3.1415926;
- const maxint =32767;
- const *char str ="Hello, world";
-
- Åα¿óÑñÑ¡¡δÑ ¡¿ªÑ πΓóÑαªñÑ¡¿∩ ¡Ññ«»πßΓ¿¼δ:
-
- pi = 3.0; /* Åα¿ßó«Ñ¡¿Ñ º¡áτÑ¡¿∩
- ¬«¡ßΓá¡ΓÑ */
- i = maxint--; /* ô¼Ñ¡∞ΦÑ¡¿Ñ ¬«¡ßΓá¡Γδ */
- str = "Hi, there!"; /* ÅÑαѡạáτÑ¡¿Ñ π¬áºáΓѽ∩ */
-
-
- - 13 -
-
-
-
-
- Å_α_¿_¼_Ñ_τ_á_¡_¿_Ñ. Äñ¡á¬«, ó맮ó Σπ¡¬µ¿¿ strcpy(str,"Hi, the-
- re!") ñ«»πßΓ¿¼, Γ.¬. ó ñá¡¡«¼ ß½πτáÑ «ßπΘÑßΓó½∩ÑΓß∩ »«ß¿¼ó«½∞-
- ¡«Ñ ¬«»¿α«óá¡¿Ñ ßΓ᫬¿ "Hi, there!" ó ∩τÑ⌐¬¿ »á¼∩Γ¿, «»αÑñÑ-
- ½∩ѼδÑ str.
-
-
- 1.9.5. î«ñ¿Σ¿¬áΓ«α volatile
-
-
- î«ñ¿Σ¿¬áΓ«α volatile - »«τΓ¿ »«½¡á∩ »α«Γ¿ó«»«½«ª¡«ßΓ∞
- const. Ä¡ π¬áºδóáÑΓ, τΓ« «íΩÑ¬Γ ¼«ªÑΓ íδΓ∞ ¿º¼Ñ¡Ñ¡; ¡« ¡Ñ Γ«½∞-
- ¬« ¡Ñ»«ßαÑñßΓóÑ¡¡« óáΦÑ⌐ »α«úαá¼¼«⌐, ¡« ¿ Γá¬ªÑ ó¡ÑΦ¡¿¼ ó«º-
- ñÑ⌐ßΓó¿Ñ¼, Γᬿ¼ ¬á¬ »α«úαá¼¼á »αÑαδóá¡¿⌐ ¿½¿ »«αΓ
- óó«ñá/óδó«ñá. ÄíΩ∩ó½Ñ¡¿Ñ «íΩѬΓá ¬á¬ volatile »αÑñπ»αѪñáÑΓ
- ¬«¼»¿½∩Γ«α, τΓ« ¡Ñ ¡πª¡« ñѽáΓ∞ »αÑñ»«½«ªÑ¡¿⌐ «Γ¡«ß¿Γѽ∞¡« º¡á-
- τÑ¡¿∩ «íΩѬΓá, ó Γ« óαѼ∩ ¬á¬ «µÑ¡¿óáεΓß∩ óδαáªÑ¡¿∩, Ñú« ß«ñÑα-
- ªáΘ¿Ñ, Γ.¬. º¡áτÑ¡¿Ñ ¼«ªÑΓ (ΓÑ«αÑΓ¿τÑ߬¿) ¿º¼Ñ¡¿Γ∞ß∩ ó ½εí«⌐
- ¼«¼Ñ¡Γ. èα«¼Ñ Γ«ú«, ¿ß»«½∞º«óá¡¿Ñ ñá¡¡«ú« ¼«ñ¿Σ¿¬áΓ«αá ¡Ñ »«º-
- ó«½∩ÑΓ ¬«¼»¿½∩Γ«απ ¿ß»«½∞º«óáΓ∞ ó¼ÑßΓ« »ÑαѼѡ¡δσ αÑú¿ßΓα«óδÑ
- »ÑαѼѡ¡δÑ.
-
- Åα¿¼Ñαδ:
-
- volatile int ticks;
- interrupt timer();
- {
- ticks++;
- }
-
- wait (int interval)
- {
- ticks=0;
- while(ticks<interval);
- }
-
- ¥Γ¿ »α«úαá¼¼δ íπñπΓ "ªñáΓ∞" ó ΓÑτÑ¡¿Ñ óαѼѡ¿, π¬áºá¡¡«ú«
- ó áαúπ¼Ñ¡ΓÑ interval. çá¼ÑΓ¿¼, τΓ« ¬«¼»¿½∩Γ«α ß óδß«¬¿¼ πα«ó¡Ñ¼
- «»Γ¿¼¿ºáµ¿¿ ¼«ªÑΓ ¡Ñ ºáúαπº¿Γ∞ º¡áτÑ¡¿Ñ ticks ó¡πΓα¿ µ¿¬½á whi-
- le, Γ.¬. µ¿¬½ ¡Ñ ¿º¼Ñ¡∩ÑΓ º¡áτÑ¡¿∩ ticks.
-
-
- 1.9.6. î«ñ¿Σ¿¬áΓ«αδ cdecl ¿ pascal
-
-
- Turbo-C »«ºó«½∩ÑΓ «íαáΘáΓ∞ß∩ ¿º óáΦÑ⌐ »α«úαá¼¼δ ¬ »α«úαá¼-
- ¼á¼, ¡á»¿ßá¡¡δ¼ ¡á ñαπú¿σ ∩ºδ¬áσ, ¿ ¡á«í«α«Γ. Åα¿ ß¼ÑΦ¿óá¡¿¿
- ∩ºδ¬«ó óδ ñ«½ª¡δ ¿¼ÑΓ∞ ñѽ« ß ñóπ¼∩ óáª¡δ¼¿ «íΩÑ¬Γ¿¼¿: ¿ñÑ¡Γ¿-
- Σ¿¬áΓ«αἿ ¿ »ÑαÑñáóáÑ¼δ¼¿ »áαá¼ÑΓαἿ.
-
- è«úñá óδ ¬«¼»¿½¿απÑΓÑ »α«úαá¼¼π ó Turbo-C, óßÑ ú½«íá½∞¡δÑ
- ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ »α«úαá¼¼δ, Γ.Ñ. ¿¼Ñ¡á Σπ¡¬µ¿⌐ ¿ ú½«íá½∞¡δÑ »ÑαÑ-
- ¼Ñ¡¡δÑ, ß«σαá¡∩εΓß∩ ó «íΩÑ¬Γ¡«¼ ¬«ñÑ, »«½πτÑ¡¡«¼ ó αѺπ½∞ΓáΓÑ
- ¬«¼»¿½∩µ¿¿, ñ½∩ αáí«Γδ αÑñá¬Γ«αá ßó∩ºÑ⌐. Å« π¼«½τá¡¿ε φΓ¿ ¿ñÑ¡-
- Γ¿Σ¿¬áΓ«αδ ß«σαá¡∩εß∩ ó ßó«Ñ¼ »Ñαó«¡áτá½∞¡«¼ ó¿ñÑ (Γ.Ñ ¡áí-
-
- - 14 -
-
-
-
-
- αá¡¡δ¼¿ ºáú½áó¡δ¼¿, ßΓα«τ¡δ¼¿ ¿½¿ ΓѼ¿ ¿ ñαπú¿¼¿ íπ¬óἿ). èα«-
- ¼Ñ Γ«ú«, ß¿¼ó«½ (_) »αÑñΦÑßΓóπÑΓ ¿ñÑ¡Γ¿Σ¿¬áΓ«απ, Ñß½¿ óδ ¡Ñ ¿ß-
- »«½∞º«ó὿ «»µ¿ε -u- »α¿ ¬«¼»¿½∩µ¿¿.
-
- ǡὫú¿τ¡«, óßÑ ó¡ÑΦ¡¿Ñ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ, «íΩ∩ó½Ñ¡¡δÑ ó
- »α«úαá¼¼Ñ, «ßΓáεΓß∩ ó Γ«¼ ªÑ ßἫ¼ Σ«α¼áΓÑ. ÉÑñá¬Γ«α ßó∩ºÑ⌐ (»«
- π¼«½τá¡¿ε) αẽ¿τáÑΓ αÑú¿ßΓαδ ¬½áó¿áΓπαδ, »«φΓ«¼π ¿ñÑ¡Γ¿Σ¿¬á-
- Γ«αδ, ¿ß»«½∞ºπѼδÑ ó αẽ¿τ¡δσ »α«úαá¼¼áσ, ñ«½ª¡δ »«½¡«ßΓ∞ε
- ß«ó»áñáΓ∞ ¬á¬ ß Γ«τ¬¿ ºαÑ¡¿∩ «αΣ«úαáΣ¿¿ Γᬠ¿ αÑú¿ßΓα«ó ¬½áó¿á-
- Γπαδ.
-
-
- 1.9.6.1. pascal
-
-
- é «»αÑñѽѡ¡δσ ß¿Γπᵿ∩σ, ¡á»α¿¼Ñα »α¿ ¿ß»«½∞º«óá¡¿¿
- ¬«ñ«ó, ºá»¿ßá¡¡δσ ¡á ñαπú¿σ ∩ºδ¬áσ, «»¿ßá¡¡δ⌐ óδΦÑ ¼ÑΓ«ñ ß«σαá-
- ¡Ñ¡¿∩ ¿¼Ñ¡, »α¿¼Ñ¡∩Ѽδ⌐ »« π¼«½τá¡¿ε, ¼«ªÑΓ óδºóáΓ∞ α∩ñ
- »α«í½Ñ¼. Turbo-C »«ºó«½∩ÑΓ ¿ºíѪáΓ∞ ñá¡¡δσ »α«í½Ñ¼. ¡« «íΩ∩-
- ó¿Γ∞ ½εí«⌐ ¿ñÑ¡Γ¿Σ¿¬áΓ«α ¬á¬ ¿ñÑ¡Γ¿Σ¿¬áΓ«α Γ¿»á pascal. ¥Γ« «º-
- ¡áτáÑΓ, τΓ« ¿ñÑ¡Γ¿Σ¿¬áΓ«α »αÑ«íαáºπÑΓß∩ ¬ óÑασ¡Ñ¼π αÑú¿ßΓαπ ¿
- ¡Ñ ñ«íáó½∩ÑΓß∩ ß¿¼ó«½ »«ñτÑનóá¡¿∩. (àß½¿ ¿ñÑ¡Γ¿Σ¿¬áΓ«α Σπ¡¬-
- µ¿∩, ñá¡¡«Ñ »αá󿽫 αáß»α«ßΓαá¡∩ÑΓß∩ ¡á »ÑαÑñáóáѼδÑ
- »áαá¼ÑΓαδ.)
-
-
- 1.9.6.2. cdecl
-
-
- éßÑ ú½«íá½∞¡δÑ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ ó ¿ßσ«ñ¡«¼ Σá⌐½Ñ ¼«ª¡« ßñÑ-
- ½áΓ∞ ¿ñÑ¡Γ¿Σ¿¬áΓ«αἿ Γ¿»á pascal, ¿ß»«½∞ºπ∩ «»µ¿ε -p »α¿ ¬«¼-
- »¿½∩µ¿¿. Äñ¡á¬«, óδ ¼«ªÑΓÑ π¬áºáΓ∞, τΓ« «»αÑñѽѡ¡δÑ ¿ñÑ¡Γ¿Σ¿-
- ¬áΓ«αδ - ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ ¡Ñ Åá߬á½Ñó߬«ú« Γ¿»á. éδ ¼«ªÑΓÑ «íΩ∩-
- ó¿Γ∞ ¿σ ¬á¬ cdecl, (ñá¡¡«Ñ »αá󿽫 αáß»α«ßΓαá¡∩ÑΓß∩ ¿ ¡á »ÑαÑ-
- ñáóáѼδÑ ó Σπ¡¬µ¿ε »áαá¼ÑΓαδ).
-
- Å_α_¿_¼_Ñ_τ_á_¡_¿_Ñ. éßÑ Σπ¡¬µ¿¿ ó ß¿ßΓѼ¡δσ include-Σá⌐½áσ
- (¡á»α¿¼Ñα, stdio.h) ¿¼ÑεΓ Γ¿» cdecl. ¥Γ« »«ºó«½∩ÑΓ »«ñ¬½ετáΓ∞
- ß¿ßΓѼ¡δÑ í¿í½¿«ΓѬ¿, Ñß½¿ óδ ¿ß»«½∞ºπÑΓÑ «»µ¿ε -p »α¿ ¬«¼»¿½∩-
- 樨.
-
-
- 1.9.7. î«ñ¿Σ¿¬áΓ«αδ near, far ¿ huge
-
-
- äá¡¡δÑ ¼«ñ¿Σ¿¬áΓ«αδ ó«ºñÑ⌐ßΓóπεΓ ¡á ¬«ßóÑ¡¡δÑ «»ÑαáΓ«α
- (*), á ¿¼Ñ¡¡«, ¼«ñ¿Σ¿µ¿απεΓ π¬áºáΓѽ¿ ¡á ñá¡¡δÑ.
-
- Turbo-C »«ºó«½∩ÑΓ ¿ß»«½∞º«óáΓ∞ αẽ¿τ¡δÑ ¼«ñѽ¿ »á¼∩Γ¿.
- î«ñѽ∞, ¬«Γ«απε óδ ¿ß»«½∞ºπÑΓÑ, «»αÑñѽ∩ÑΓ ó¡ÑΦ¡¿⌐ Σ«α¼áΓ π¬á-
- ºáΓѽÑ⌐ ¡á ñá¡¡δÑ. àß½¿ óδ ¿ß»«½∞ºπÑΓÑ "¼á½πε" ¼«ñѽ∞ ñá¡¡δσ
- (tiny, small, medium), óßÑ π¬áºáΓѽ¿ ¿¼ÑεΓ ñ½¿¡π Γ«½∞¬« 16 í¿Γ
- ¿ ºáñáεΓ ß¼ÑΘÑ¡¿Ñ «Γ¡«ß¿Γѽ∞¡« αÑú¿ßΓαá ßÑú¼Ñ¡Γá ñá¡¡δσ (DS).
- àß½¿ ¿ß»«½∞ºπÑΓß∩ "í«½∞Φá∩" ¼«ñѽ∞ »á¼∩Γ¿ (compact, large,
-
- - 15 -
-
-
-
-
- huge), óßÑ π¬áºáΓѽ¿ ¡á ñá¡¡δÑ ¿¼ÑεΓ ñ½¿¡π 32 í¿Γá ¿ ºáñáεΓ ¬á¬
- áñαÑß ßÑú¼Ñ¡Γá, Γᬠ¿ ß¼ÑΘÑ¡¿Ñ.
-
- é ¡Ñ¬«Γ«αδσ ß½πτá∩σ, ¬«úñá ¿ß»«½∞ºπÑΓß∩ «ñ¿¡ αẼÑα ¼«ñѽ¿
- ñá¡¡δσ, ¼«ª¡« «íΩ∩ó¿Γ∞ π¬áºáΓѽ∞ ß αẼÑα«¼ ¿½¿ Σ«α¼áΓ«¼, «Γ-
- ½¿τ¡δ¼ «Γ ¿ß»«½∞ºπѼ«ú« »« π¼«½τá¡¿ε. ¥Γ« ñѽáÑΓß∩ ß »«¼«Θ∞ε
- ¼«ñ¿Σ¿¬áΓ«α«ó near, far ¿ huge.
-
- ô¬áºáΓѽ∞ Γ¿»á near - 16-í¿Γ¡δ⌐; «¡ ¿ß»«½∞ºπÑΓ ΓѬπΘÑÑ ß«-
- ñÑন¼«Ñ αÑú¿ßΓαá ßÑú¼Ñ¡Γá ñá¡¡δσ (DS) ñ½∩ «»αÑñѽѡ¿∩ áñαÑßá
- ßÑú¼Ñ¡Γá. Å« π¼«½τá¡¿ε ¿ß»«½∞ºπÑΓß∩ ñ½∩ ¼á½δσ ¼«ñѽÑ⌐ ñá¡¡δσ.
- Åα¿ ¿ß»«½∞º«óá¡¿¿ π¬áºáΓѽÑ⌐ Γ¿»á near, ñá¡¡δÑ óáΦÑ⌐ »α«úαá¼¼δ
- «úαá¡¿τÑ¡δ αẼÑα«¼ ΓѬπΘÑú« ßÑú¼Ñ¡Γá ñá¡¡δσ 64è.
-
- ô¬áºáΓѽ∞ Γ¿»á far - 32-í¿Γ¡δ⌐; ß«ñÑαª¿Γ ¬á¬ áñαÑß, Γᬠ¿
- ß¼ÑΘÑ¡¿Ñ. Å« π¼«½τá¡¿ε ¿ß»«½∞ºπÑΓß∩ ñ½∩ í«½∞Φ¿σ ¼«ñѽÑ⌐. Åα¿
- ¿ß»«½∞º«óá¡¿¿ π¬áºáΓѽÑ⌐ Γ¿»á far ñ«»π߬áεΓß∩ ßß佬¿ ¡á ñá¡¡δÑ
- ó »αÑñѽáσ 1-îí áñαÑß¡«ú« »α«ßΓαá¡ßΓóá »α«µÑßß«α«ó Intel
- 8088/8086.
-
- ô¬áºáΓѽ∞ Γ¿»á huge - 32-í¿Γ¡δ⌐; á¡á½«ú¿τ¡« »αÑñδñπΘѼπ,
- ß«ñÑαª¿Γ áñαÑß ßÑú¼Ñ¡Γá ¿ ß¼ÑΘÑ¡¿Ñ, «ñ¡á¬«, ó «Γ½¿τ¿¿ «Γ π¬áºá-
- ΓѽÑ⌐ Γ¿»á far, π¬áºáΓѽ∞ huge óßÑúñá »«ññÑনóáÑΓß∩ ¡«α¼á½¿º«-
- óá¡¡δ¼:
-
- - Ä»ÑαáΓ«αδ «Γ¡«ΦÑ¡¿∩ (==, !=, <, >, <=, >=) αáí«ΓáεΓ »αá-
- ó¿½∞¡« ß π¬áºáΓѽ∩¼¿ Γ¿»á huge; ¡« ¡Ñ ß π¬áºáΓѽ∩¼¿ Γ¿»á
- far.
-
- - éßÑ áα¿Σ¼ÑΓ¿τÑ߬¿Ñ «»Ñαᵿ¿ ¡áñ π¬áºáΓѽѼ huge ó«º-
- ñÑ⌐ßΓóπεΓ ¬á¬ ¡á áñαÑß ßÑú¼Ñ¡Γá, Γᬠ¿ ¡á ß¼ÑΘÑ¡¿Ñ (¿º-
- ºá ¡«α¼á½¿ºáµ¿¿); »α¿ ¿ß»«½∞º«óá¡¿¿ far π¬áºáΓѽÑ⌐ -
- ó«ºñÑ⌐ßΓó¿Ñ Γ«½∞¬« ¡á ß¼ÑΘÑ¡¿Ñ.
-
- - çáñá¡¡δ⌐ π¬áºáΓѽ∞ Γ¿»á huge ¼«ªÑΓ íδΓ∞ πóѽ¿τÑ¡ ó »αÑ-
- ñѽáσ 1îí áñαÑß¡«ú« »α«ßΓαá¡ßΓóá; π¬áºáΓѽ¿ Γ¿»á far íπ-
- ñπΓ »α¿ «»αÑñѽѡ¡δσ «íßΓ«∩Γѽ∞ßΓóáσ µ¿¬½¿τÑ߬¿ »ÑαÑσ«-
- ñ¿Γ∞ ¡á ¡áτὫ 64è ßÑú¼Ñ¡Γá.
-
- - Åα¿ ¿ß»«½∞º«óá¡¿¿ π¬áºáΓѽÑ⌐ Γ¿»á huge ΓαÑíπÑΓß∩ ñ«»«½-
- ¡¿Γѽ∞¡«Ñ óαѼ∩, Γ.¬. »α«úαá¼¼δ ¡«α¼á½¿ºáµ¿¿ ñ«½ª¡δ
- óδºδóáΓ∞ß∩ »«ß½Ñ óδ»«½¡Ñ¡¿∩ ½εí«⌐ áα¿Σ¼ÑΓ¿τÑ߬«⌐ «»Ñαá-
- µ¿¿ ¡áñ π¬áºáΓѽ∩¼¿.
-
-
- 1.10. æΓαπ¬Γπαδ ¿ «íΩÑñ¿¡Ñ¡¿∩ (K&R 8.5)
-
-
- Turbo-C «íÑß»Ñτ¿óáÑΓ ß½ÑñπεΘ¿Ñ ñ«»«½¡¿Γѽ∞¡δÑ ó«º¼«ª¡«ßΓ¿.
-
-
-
-
-
-
- - 16 -
-
-
-
-
- 1.10.1. éδαáó¡¿óá¡¿Ñ ß½«ó
-
-
- àß½¿ »α¿ ¬«¼»¿½∩µ¿¿ ¿ß»«½∞ºπÑΓß∩ «»µ¿∩ -a, Turbo-C íπñÑΓ
- ºá»«½¡∩Γ∞ íá⌐ΓἿ ßΓαπ¬Γπαπ (¿½¿ «íΩÑñ¿¡Ñ¡¿Ñ) Γᬿ¼ «íαẫ¼,
- ¬á¬ ΓαÑíπÑΓß∩ ñ½∩ óδαáó¡¿óá¡¿∩ ß½«ó. ÄíÑß»Ñτ¿óáÑΓß∩ ß½ÑñπεΘÑÑ:
-
- - æΓαπ¬Γπαá íπñÑΓ ¡áτ¿¡áΓ∞ß∩ ß úαá¡¿µδ ß½«óá (τÑΓ¡δ⌐
- áñαÑß).
-
- - ïεí«⌐ τ½Ñ¡, ¿¼ÑεΘ¿⌐ ¡Ñ-char Γ¿», íπñÑΓ ¿¼ÑΓ∞ τÑΓ¡«Ñ ß¼Ñ-
- ΘÑ¡¿Ñ «Γ ¡áτá½á ßΓαπ¬Γπαδ.
-
- - é ¬«¡Ñµ íπñÑΓ ñ«íáó½Ñ¡ íá⌐Γ (Ñß½¿ ¡Ñ«íσ«ñ¿¼«), ñ½∩ úá-
- αá¡Γ¿¿ Γ«ú«, τΓ« ßΓαπ¬Γπαá ß«ñÑαª¿Γ τÑΓ¡«Ñ τ¿ß½« íá⌐Γ.
-
-
- 1.10.2. ü¿Γ«óδÑ »«½∩
-
-
- ü¿Γ«ó«Ñ »«½Ñ ¼«ªÑΓ ¿¼ÑΓ∞ Γ¿» ½¿í« signed, ½¿í« unsigned
- int ¿ ¼«ªÑΓ ºá¡¿¼áΓ∞ «Γ 1 ñ« 16 í¿Γ«ó. ü¿Γ«óδÑ »«½∩ αẼÑΘáεΓß∩
- ó ¡á»αáó½Ñ¡¿¿ «Γ ¼½áñΦ¿σ ¬ ßΓáαΦ¿¼ í¿Γá¼ ó ß½«óÑ. ìá»α¿¼Ñα,
- ßΓαπ¬Γπαá
-
- struct mystruct {
- int i : 2;
- unsigned j : 5;
- int : 4;
- int k : 1;
- unsigned n : 4;
- } a, b, c;
-
- «íÑß»Ñτ¿óáÑΓ ß½ÑñπεΘÑÑ αẼÑΘÑ¡¿Ñ:
-
- __________________________________________________
- |15|14|13|12|11 |10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
- |--|--|--|--|---|--|--|--|--|--|--|--|--|--|--|--|
- | x| x| x| x| x | x| x| x| x| x| x| x| x| x| x| x|
- |-----------|---|-----------|--------------|-----|
- |<--------->|<->|<- - - - ->|<------------>|<--->|
- |-----------|---|-----------|--------------|-----|
- | m | k |¡Ñ ¿ß»«½∞º.| j | i |
- |___________|___|___________|______________|_____|
-
- Å«½∩ µÑ½«ú« Γ¿»á σαá¡∩Γß∩ ó «ñ¡«⌐ ¿º ñóπσ Σ«α¼; ¬αá⌐¡¿⌐
- ½Ñóδ⌐ í¿Γ - º¡á¬«óδ⌐ í¿Γ. ìá»α¿¼Ñα, í¿Γ«ó«Ñ »«½Ñ Γ¿»á signed
- int Φ¿α¿¡«⌐ 1 í¿Γ ¼«ªÑΓ Γ«½∞¬« σαá¡¿Γ∞ º¡áτÑ¡¿Ñ -1 ¿ 0, Γ.¬.
- ½εí«Ñ ¡Ñ¡π½Ñó«Ñ º¡áτÑ¡¿Ñ íπñÑΓ ¿¡ΓÑα»αÑΓ¿α«óáΓ∞ß∩ ¬á¬ -1.
-
-
-
-
-
-
- - 17 -
-
-
-
-
- 1.11. Ä»ÑαáΓ«αδ (K&R 9)
-
-
- Turbo-C óδ»«½¡∩ÑΓ óßÑ íѺ ¿ß¬½ετÑ¡¿∩ «»ÑαáΓ«αδ, «»¿ßá¡¡δÑ
- ó K&R.
-
-
- 1.12. Ä»αÑñѽѡ¿Ñ ó¡ÑΦ¡¿σ Σπ¡¬µ¿⌐ (K&R 10.1)
-
-
- Ä»¿ßá¡¿Ñ extern, ºáñá¡¡«Ñ ó¡πΓα¿ Σπ¡¬µ¿¿, ¿¼ÑÑΓ ñÑ⌐ßΓó¿Ñ ó
- »αÑñѽáσ ñá¡¡«ú« í½«¬á. Ä»¿ßá¡¿Ñ ¡Ñ íπñÑΓ αáß»«º¡áóáΓ∞ß∩ ó¡Ñ
- í½«¬á, ó ¬«Γ«α«¼ «¡« «»αÑñѽѡ«. Äñ¡á¬«, Turbo-C íπñÑΓ
- "ºá»«¼¿¡áΓ∞" «»¿ßá¡¿∩, ñ½∩ Γ«ú« τΓ«íδ ßαáó¡¿óáΓ∞ ¿σ ß »«ß½Ññπε-
- Θ¿¼¿ «»¿ßá¡¿∩¼¿ ΓÑσ ªÑ ßá¼δσ «íΩÑ¬Γ«ó.
-
- Turbo-C »«ññÑনóáÑΓ ñ«»«½¡¿Γѽ∞¡δÑ ¼«ñ¿Σ¿¬áΓ«αδ Σπ¡¬µ¿⌐,
- Γá¬¿Ñ ¬á¬ »α«Γ«Γ¿»δ Σπ¡¬µ¿⌐ (ANSI-ßΓá¡ñáαΓ). æπΘÑßΓóπÑΓ ¡Ñß-
- ¬«½∞¬« ß«íßΓóÑ¡¡δσ αáßΦ¿αÑ¡¿⌐ Turbo-C, ¡á»α¿¼Ñα Σπ¡¬µ¿¿ Γ¿»á
- interrupt.
-
-
- 1.12.1. î«ñ¿Σ¿¬áΓ«αδ Γ¿»á Σπ¡¬µ¿¿ (K&R 10.1.1)
-
-
- é ñ«»«½¡Ñ¡¿Ñ ¬ external ¿ static, Turbo-C »«ññÑনóáÑΓ α∩ñ
- ¼«ñ¿Σ¿¬áΓ«α«ó Γ¿»á ñ½∩ «»¿ßá¡¿∩ Σπ¡¬µ¿⌐: pascal, cdecl, inter-
- rupt, near, far ¿ huge.
-
-
- 1.12.1.1. î«ñ¿Σ¿¬áΓ«α Σπ¡¬µ¿¿ pascal
-
-
- äá¡¡δ⌐ ¼«ñ¿Σ¿¬áΓ«α ¿ß»«½∞ºπÑΓß∩ ñ½∩ Σπ¡¬µ¿⌐ (¿½¿ π¬áºáΓÑ-
- ½Ñ⌐ ¡á Σπ¡¬µ¿¿), ¬«Γ«αδÑ ¿ß»«½∞ºπεΓ Åá߬á½Ñó߬πε »«ß½Ññ«óáΓѽ∞-
- ¡«ßΓ∞ »ÑαÑñáτ¿ »áαá¼ÑΓα«ó. ¥Γ« »«ºó«½∩ÑΓ »¿ßáΓ∞ ¡á ∩ºδ¬Ñ C
- Σπ¡¬µ¿¿, ¬«Γ«αδÑ ¼«úπΓ íδΓ∞ óδºóá¡δ ¿º »α«úαá¼¼, ¡á»¿ßá¡¡δσ ¡á
- ñαπú«¼ ∩ºδ¬Ñ; á¡á½«ú¿τ¡«, ¡á½¿τ¿Ñ ¼«ñ¿Σ¿¬áΓ«αá íπñÑΓ ñ«»π߬áΓ∞
- «íαáΘÑ¡¿Ñ ¿º C-»α«úαá¼¼, ¬ ó¡ÑΦ¡¿¼ »«ñ»α«úαá¼¼á¼, ¡á»¿ßá¡¡δ¼ ¡á
- ñαπú¿σ ∩ºδ¬áσ. ê¼∩ Σπ¡¬µ¿¿ »αÑ«íαáºπÑΓß∩ ¬ óÑασ¡Ñ¼π αÑú¿ßΓαπ,
- τΓ« ¡Ñ«íσ«ñ¿¼« ñ½∩ αáí«Γδ αÑñá¬Γ«αá ßó∩ºÑ⌐.
-
- Å_α_¿_¼_Ñ_τ_á_¡_¿_Ñ. êß»«½∞º«óá¡¿Ñ «»µ¿¿ -p íπñÑΓ »α¿ó«ñ¿Γ∞ ¬
- Γ«¼π, τΓ« óßÑ Σπ¡¬µ¿¿ (¿ π¬áºáΓѽ¿ ¡á φΓ¿ Σπ¡¬µ¿¿) íπñπΓ αáßß-
- ¼áΓα¿óáΓ∞ß∩ ¬á¬ Ñß½¿ íδ «¡¿ ¿¼Ñ½¿ Γ¿» pascal. ìá»α¿¼Ñα, Ñß½¿ óδ
- «íΩ∩󿽿 ¿ «Γ¬«¼»¿½¿α«ó὿ ß½ÑñπεΘπε Σπ¡¬µ¿ε:
-
- pascal putnums(unt i, int j, int k)
- {
- printf("And the answers are: %d, %d ¿ %d\n",i,j,k);
- }
-
- ñαπúá∩ C-»α«úαá¼¼á ¼«ªÑΓ ºáΓѼ »«ñ¬½ετ¿Γ∞ ñá¡¡πε Σπ¡¬µ¿ε »α¿
- αáí«ΓÑ αÑñá¬Γ«αá ßó∩ºÑ⌐ ¿ «íαáΘáΓ∞ß∩ ¬ ¡Ñ⌐, ¿ß»«½∞ºπ∩ «»¿ßá¡¿Ñ:
-
- - 18 -
-
-
-
-
-
- pascal putnums(int i, int j, int k);
- main()
- {
- putnum(1,4,9);
- }
-
- öπ¡¬µ¿¿ Γ¿»á pascal ¡Ñ ¼«úπΓ ¿¼ÑΓ∞ αẽ¿τ¡«Ñ τ¿ß½« áαúπ-
- ¼Ñ¡Γ«ó, ¬á¬, ¡á»α¿¼Ñα, Σπ¡¬µ¿∩ printf. Å« φΓ«⌐ »α¿τ¿¡Ñ óδ ¡Ñ
- ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ φ½½¿»ß¿ß (...) (»α«»π߬ »«ñαáºπ¼ÑóáѼ«ú«
- áαúπ¼Ñ¡Γá) ó «»αÑñѽѡ¿¿ Σπ¡¬µ¿¿ Γ¿»á pascal.
-
-
- 1.12.1.2. î«ñ¿Σ¿¬áΓ«α Σπ¡¬µ¿¿ cdecl
-
-
- äá¡¡δ⌐ ¼«ñ¿Σ¿¬áΓ«α á¡á½«ú¿τÑ¡ ¼«ñ¿Σ¿¬áΓ«απ pascal; ¿ß»«½∞-
- ºπÑΓß∩ ß Σπ¡¬µ¿∩¼¿ ¿½¿ π¬áºáΓѽ∩¼¿ ¡á Σπ¡¬µ¿¿, ñ½∩ Γ«ú« τΓ«íδ
- «Γ¼Ñ¡¿Γ∞ ñ¿αÑ¬Γ¿ó𠬫¼»¿½∩Γ«αá -p ¿ «íΩ∩ó¿Γ∞ Σπ¡¬µ¿ε ¬á¬ «íδτ-
- ¡πε C-Σπ¡¬µ¿ε. ìá»α¿¼Ñα, Ñß½¿ óδ »α¿ ¬«¼»¿½∩µ¿¿ »α«úαá¼¼δ πßΓá-
- ¡«ó¿½¿ «»µ¿ε -p, ¡« σ«Γ¿ΓÑ ¿ß»«½∞º«óáΓ∞ printf, óδ ñ«½ª¡δ »«ß-
- Γπ»¿Γ∞ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- extern cdecl printf();
- putnums(int i, int j, int k);
-
- cdecl main()
- {
- putnums(1,4,9);
- }
-
- putnums(int i, int j, int k)
- {
- printf("And the answers are: %d, %d ¿ %d\n",i,j,k);
- }
-
- àß½¿ »α«úαá¼¼á ¬«¼»¿½¿απÑΓß∩ ß «»µ¿Ñ⌐ -p, óßÑ Σπ¡¬µ¿¿ ¿º
- ß¿ßΓѼ¡«⌐ í¿í½¿«ΓѬ¿ ¡Ñ«íσ«ñ¿¼« «íΩ∩ó¿Γ∞ ¬á¬ cdecl. àß½¿ óδ
- »«ß¼«Γα¿ΓÑ ß¿ßΓѼ¡δÑ include-Σá⌐½δ, Γ« πó¿ñÑΓÑ, τΓ« ¬áªñá∩
- Σπ¡¬µ¿∩ ∩ó¡« «»¿ßá¡á ¬á¬ cdecl.
-
- Å_α_¿_¼_Ñ_τ_á_¡_¿_Ñ. â½á¡á∩ »α«úαá¼¼á (main) ñ«½ª¡á íδΓ∞ ΓᬪÑ
- «íΩ∩ó½Ñ¡á cdecl.
-
-
- 1.12.1.3. î«ñ¿Σ¿¬áΓ«α Σπ¡¬µ¿¿ interrupt
-
-
- î«ñ¿Σ¿¬áΓ«α interrupt »αÑñ¡áº¡áτÑ¡ ñ½∩ ¿ß»«½∞º«óá¡¿∩ ß
- óÑ¬Γ«αἿ »αÑαδóá¡¿⌐ »α«µÑßß«αá 8086/8088. Turbo-C íπñÑΓ ¬«¼»¿-
- ½¿α«óáΓ∞ Σπ¡¬µ¿ε Γ¿»á interrupt ß ñ«»«½¡¿Γѽ∞¡δ¼ óσ«ñ«¼ ¿ ¬«ñ«¼
- ºáóÑαΦÑ¡¿∩, ΓᬠτΓ« αÑú¿ßΓαδ AX, BX, CX, DX, SI, DI, ES ¿ DS
- ß«σαá¡∩εΓß∩. äαπú¿Ñ αÑú¿ßΓαδ: BP, SP, SS, CS ¿ IP ß«σαá¡∩εΓß∩
- ¬á¬ τáßΓ∞ »«ß½Ññ«óáΓѽ∞¡«ßΓ¿ C-ó맮óá ¿½¿ τáßΓ∞ ßἫ⌐ «íαáí«Γ¬¿
-
- - 19 -
-
-
-
-
- »αÑαδóá¡¿∩. Éáßß¼«Γα¿¼ »α¿¼Ñα ßΓá¡ñáαΓ¡«ú« «»αÑñѽѡ¿∩ Σπ¡¬µ¿¿
- Γ¿»á interrupt.
-
- void interrupt myhandler()
- {
- . . .
- }
-
- åѽáΓѽ∞¡« «íΩ∩ó½∩Γ∞ Σπ¡¬µ¿¿ »αÑαδóá¡¿⌐ ¬á¬ Σπ¡¬µ¿¿ Γ¿»á
- void. öπ¡¬µ¿¿ »αÑαδóá¡¿⌐ »«ññÑনóáεΓß∩ ñ½∩ óßÑσ ¼«ñѽÑ⌐
- »á¼∩Γ¿. ä½∩ óßÑσ ¼«ñѽÑ⌐, ¿ß¬½ετá∩ huge, ó αÑú¿ßΓα DS ºá¡«ß¿Γß∩
- ßÑú¼Ñ¡Γ ñá¡¡δσ »α«úαá¼¼δ. ä½∩ ¼«ñѽ¿ huge ó DS ºá¡«ß¿Γß∩ ¼«-
- ñπ½∞¡δ⌐ ßÑú¼Ñ¡Γ ñá¡¡δσ.
-
-
- 1.12.1.4. Åα«Γ«Γ¿»δ Σπ¡¬µ¿⌐ (K&R 10.1.2)
-
-
- é K&R ñ«»π߬áÑΓß∩ Γ«½∞¬« «íΩ∩ó½Ñ¡¿Ñ Σπ¡¬µ¿¿, ß«ßΓ«∩ΘÑÑ ¿º
- ¿¼Ñ¡¿, Γ¿»á ¿ »πßΓδσ ߬«í«¬. Åáαá¼ÑΓαδ (Ñß½¿ «¡¿ ÑßΓ∞) «íΩ∩ó-
- ½∩εΓß∩ Γ«½∞¬« ó «»αÑñѽѡ¿¿ ¡Ñ»«ßαÑñßΓóÑ¡¡« ßἫ⌐ Σπ¡¬µ¿¿.
-
- ANSI ßΓá¡ñáαΓ ¿ Turbo-C ñ«»π߬áεΓ ¿ß»«½∞º«óá¡¿Ñ »α«Γ«Γ¿»«ó
- Σπ¡¬µ¿⌐, ñ½∩ Γ«ú« τΓ«íδ «íΩ∩ó¿Γ∞ Σπ¡¬µ¿ε. æπΘÑßΓóπεΓ ß»Ñµ¿á½∞¡-
- δÑ «»¿ßá¡¿∩, ¬«Γ«αδÑ ó¬½ετáεΓ ¿¡Σ«α¼áµ¿ε « »áαá¼ÑΓαáσ Σπ¡¬µ¿¿.
- 諼»¿½∩Γ«α ¿ß»«½∞ºπÑΓ ñá¡¡πε ¿¡Σ«α¼áµ¿ε ñ½∩ »α«óÑન ó맮ó«ó
- Σπ¡¬µ¿⌐, á Γá¬ªÑ ñ½∩ »αÑ«íαẫóá¡¿∩ áαúπ¼Ñ¡Γ«ó ¬ ΓαÑíπεΘѼπß∩
- Γ¿»π. Éáßß¼«Γα¿¼ ß½ÑñπεΘ¿⌐ Σαáú¼Ñ¡Γ »α«úαá¼¼δ:
-
- long lmax(long v1, long v2);
-
- main()
- {
- int limit=32;
- char ch='A';
- long mval;
-
- mval=lmax(limit,ch);
- }
-
- çáñá¡ »α«Γ«Γ¿» Σπ¡¬µ¿¿ ñ½∩ lmax; φΓá »α«úαá¼¼á íπñÑΓ
- »αÑ«íαẫóδóáΓ∞ »áαá¼ÑΓαδ limit ¿ ch ¬ Γ¿»π long, ¿ß»«½∞ºπ∩
- ßΓá¡ñáαΓ¡δÑ »αáó¿½á »αÑ«íαẫóá¡¿∩, »αѪñÑ τѼ «¡¿ íπñπΓ »«¼Ñ-
- ΘÑ¡δ ó ßΓѬ ñ½∩ «íαáΘÑ¡¿∩ ¬ lmax. Åα¿ «ΓßπΓßΓó¿¿ »α«Γ«Γ¿»á
- Σπ¡¬µ¿¿ »áαá¼ÑΓαδ limit ¿ ch í뫨 íδ »«¼ÑΘÑ¡δ ó ßΓѬ ß««ΓóÑΓßΓ-
- óÑ¡¡« ¬á¬ µÑ½«Ñ º¡áτÑ¡¿Ñ ¿ ß¿¼ó«½; ó φΓ«¼ ß½πτáÑ ó lmax »ÑαÑñá-
- ó὿ß∞ íδ »áαá¼ÑΓαδ, ¡Ñ ß«ó»áñáεΘ¿Ñ »« αẼÑαπ ¿ ß«ñÑαªá¡¿ε ß
- «ª¿ñáÑ¼δ¼¿. êß»«½∞º«óá¡¿Ñ »α«Γ«Γ¿»«ó Σπ¡¬µ¿⌐ »«ºó«½∩ÑΓ ¿ºíѪáΓ∞
- «Φ¿í«¬.
-
- Ä»¿ßá¡¿Ñ Σπ¡¬µ¿¿
-
- f(void)
-
-
- - 20 -
-
-
-
-
-
- «º¡áτáÑΓ, τΓ« Σπ¡¬µ¿∩ ¡Ñ ¿¼ÑÑΓ áαúπ¼Ñ¡Γ«ó.
-
- é »α«Γ¿ó¡«¼ ß½πτáÑ, ó ߬«í¬áσ π¬áºδóáÑΓß∩ ß»¿ß«¬ »áαá¼ÑΓ-
- α«ó, αáºñѽѡ¡δσ ºá»∩Γ묨. ÄíΩ∩ó½Ñ¡¿Ñ ¼«ªÑΓ íδΓ∞ ßñѽᡫ ó Σ«α-
- ¼Ñ
-
-
- func(int *, long);
-
-
- ¿½¿ ó ¡Ñú« ¼«úπΓ íδΓ∞ ó¬½ετÑ¡δ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ
-
-
- func(int * count, long total);
-
- é «í«¿σ ß½πτá∩σ, π¬áºá¡¡δσ óδΦÑ, Σπ¡¬µ¿∩ func »α¿¡¿¼áÑΓ
- ñóá »áαá¼ÑΓαá: π¬áºáΓѽ∞ ¡á Γ¿» int, ¡áºóá¡¡δ⌐ count, ¿ µÑ½πε
- »ÑαѼѡ¡πε total Γ¿»á long. êñÑ¡Γ¿Σ¿¬áΓ«α, π¬áºá¡¡δ⌐ ó «íΩ∩ó½Ñ-
- ¡¿¿, ¿ß»«½∞ºπÑΓß∩ Γ«½∞¬« ó ñ¿áú¡«ßΓ¿τÑ߬«¼ ß««íΘÑ¡¿¿, ó ß½πτáÑ
- 󫺡¿¬¡«óÑ¡¿∩ ¡Ñß««ΓóÑΓßΓó¿∩ Γ¿»á »áαá¼ÑΓα«ó.
-
- Åα«Γ«Γ¿» Σπ¡¬µ¿¿ «íδτ¡« «»αÑñѽ∩ÑΓ Σπ¡¬µ¿ε ¬á¬ Σπ¡¬µ¿ε,
- »α¿¡¿¼áεΘπε Σ¿¬ß¿α«óá¡¡«Ñ τ¿ß½« »áαá¼ÑΓα«ó. ä½∩ C-Σπ¡¬µ¿⌐, ¬«-
- Γ«αδÑ »α¿¡¿¼áεΓ αẽ¿τ¡«Ñ τ¿ß½« »áαá¼ÑΓα«ó (¡á»α¿¼Ñα, printf),
- »α«»«Γ¿» Σπ¡¬µ¿¿ ¼«ªÑΓ ºá¬á¡τ¿óáΓ∞ß∩ ¼¡«ú«Γ«τ¿Ñ¼ (...), ¡á»α¿-
- ¼Ñα
-
-
- f(int *count, long total, ...)
-
- Åα¿ Γᬫ⌐ Σ«α¼Ñ »α«Γ«Γ¿»á Σ¿¬ß¿α«óá¡¡δÑ »áαá¼ÑΓαδ »α«óÑ-
- α∩εΓß∩ ó« óαѼ∩ ¬«¼»¿½∩µ¿¿, á »ÑαѼѡ¡δÑ »áαá¼ÑΓαδ »ÑαÑñáεΓß∩,
- ¬á¬ »α¿ «ΓßπΓßΓó¿¿ »α«Γ«Γ¿»á.
-
- Éáßß¼«Γα¿¼ ¡Ñ߬«½∞¬« »α¿¼Ñα«ó.
-
- int f(); /* öπ¡¬µ¿∩ ó«ºóαáΘáÑΓ óѽ¿τ¿¡π
- Γ¿»á int. ¥Γ« ¬½áßß¿τÑ߬¿⌐
- ßΓ¿½∞ K&R */
-
- int f(void); /* öπ¡¬µ¿∩ ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ
- Γ¿»á int. ƒó¡« π¬áºá¡«, τΓ« »áαá¼ÑΓαδ
- ¡Ñ »ÑαÑñáεΓß∩ */
-
- int p(int,long); /* öπ¡¬µ¿∩ »«½πτáÑΓ ñóá »áαá¼ÑΓαá;
- »Ñαóδ⌐ ¿¼ÑÑΓ Γ¿» int, óΓ«α«⌐ - long */
-
- int pascal q(void); /* öπ¡¬µ¿∩ Åá߬á½Ñó߬«ú« Γ¿»á
- íѺ »áαá¼ÑΓα«ó; ó«ºóαáΘáÑΓ
- º¡áτÑ¡¿Ñ Γ¿»á int */
-
- char far * s(char *source, int kind); /* öπ¡¬µ¿∩
- ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ Γ¿»á far ¡á
-
- - 21 -
-
-
-
-
- ßΓ᫬π; »«½πτáÑΓ ñóá »áαá¼ÑΓαá */
-
- int printf(char *format,...); /* öπ¡¬µ¿∩ ó«ºóαáΘáÑΓ
- º¡áτÑ¡¿Ñ Γ¿»á int, »«½πτá∩ π¬áºáΓѽ∞
- ¡á Σ¿¬ß¿α«óá¡¡δ⌐ »áαá¼ÑΓα Γ¿»á char
- ¿ ½εí«Ñ τ¿ß½« ñ«»«½¡¿Γѽ∞¡δσ
- »áαá¼ÑΓα«ó ¡Ñ¿ºóÑßΓ¡«ú« Γ¿»á */
-
- int (*fp)(int); /* ô¬áºáΓѽ∞ ¡á Σπ¡¬µ¿ε, ó«ºóαáΘáεΘπε
- º¡áτÑ¡¿Ñ Γ¿»á int ¿ »«½πτáεΘπε
- Ññ¿¡ßΓóÑ¡¡δ⌐ int »áαá¼ÑΓα */
-
- ÄíΘ¿Ñ »αáó¿½á αáí«Γδ ß ¼«ñ¿Σ¿¬áΓ«αἿ ∩ºδ¬á ¿ Σ«α¼á½∞¡δ¼¿
- »áαá¼ÑΓαἿ ó ó맮óáσ Σπ¡¬µ¿⌐, ¬á¬ ¿ß»«½∞ºπεΘ¿σ »α«Γ«»¿Γδ, Γá¬
- ¿ ¿σ ¡Ñ ¿ß»«½∞ºπεΘ¿σ:
-
- 1) î«ñ¿Σ¿¬áΓ«αδ ∩ºδ¬á ñ½∩ «»¿ßá¡¿∩ Σπ¡¬µ¿⌐ ñ«½ª¡δ ß«ó»áñáΓ∞
- ß ¼«ñ¿Σ¿¬áΓ«αἿ, ¿ß»«½∞ºπÑ¼δ¼¿ ó «íΩ∩ó½Ñ¡¿¿ Σπ¡¬µ¿¿,
- ñ½∩ óßÑσ «íαáΘÑ¡¿⌐ ¬ Σπ¡¬µ¿¿.
-
- 2) öπ¡¬µ¿∩ ¼«ªÑΓ ¿º¼Ñ¡∩Γ∞ º¡áτÑ¡¿∩ Σ«α¼á½∞¡δσ »áαá¼ÑΓα«ó,
- ¡« φΓ« ¡Ñ «¬áºδóáÑΓ ¬á¬«ú«-½¿í« ó«ºñÑ⌐ßΓó¿∩ ¡á º¡áτÑ¡¿∩
- ñÑ⌐ßΓó¿Γѽ∞¡δσ áαúπ¼Ñ¡Γ«ó ó óδºδóáεΘÑ⌐ »α«úαá¼¼Ñ, ºá
- ¿ß¬½ετÑ¡¿Ñ¼ Σπ¡¬µ¿⌐ »αÑαδóá¡¿∩.
-
- àß½¿ »α«Γ«Γ¿» Σπ¡¬µ¿¿ ¡Ñ «íΩ∩ó½Ñ¡ »αÑñóáα¿Γѽ∞¡«, Turbo-C
- »αÑ«íαáºπÑΓ áαúπ¼Ñ¡Γδ »α¿ «íαáΘÑ¡¿¿ ¬ Σπ¡¬µ¿¿ ß«ú½áß¡«
- »αáó¿½á¼, «»¿ßá¡¡δ¼ ó αáºñÑ½Ñ "Çα¿Σ¼ÑΓ¿τÑ߬¿Ñ »αÑ«íαẫóá¡¿∩".
- àß½¿ «íΩ∩ó½Ñ¡ »α«Γ«Γ¿», Turbo-C »αÑ«íαáºπÑΓ áαúπ¼ÑΓδ ¬ Γ¿»π,
- «íΩ∩ó½Ñ¡¡«¼π ñ½∩ »áαá¼ÑΓα«ó.
-
- àß½¿ »α«Γ«Γ¿» Σπ¡¬µ¿¿ ó¬½ετáÑΓ ¼¡«ú«Γ«τ¿Ñ (...), Turbo-C
- »αÑ«íαáºπÑΓ óßÑ ºáñá¡¡δÑ áαúπ¼Ñ¡Γδ Σπ¡¬µ¿¿ ¬ áαúπ¼Ñ¡Γá¼, ºáñá-
- óáÑ¼δ¼ »α«Γ«Γ¿»«¼ (ñ« ¼¡«ú«Γ«τ¿∩). 諼»¿½Γ«α íπñÑΓ αáßΦ¿α∩Γ∞
- ½εíδÑ áαúπ¼Ñ¡Γδ, ºáñá¡¡δÑ »«ß½Ñ Σ¿¬ß¿α«óá¡¡δσ »áαá¼ÑΓα«ó, »«
- ¡«α¼á½∞¡δ¼ »αáó¿½á¼ ñ½∩ áαúπ¼Ñ¡Γ«ó Σπ¡¬µ¿⌐ íѺ »α«Γ«Γ¿»«ó.
-
- àß½¿ ÑßΓ∞ »α«Γ«Γ¿», τ¿ß½« áαúπ¼Ñ¡Γ«ó ñ«½ª¡« íδΓ∞ ß««Γ-
- óÑΓßΓóÑ¡¡δ¼ (ºá ¿ß¬½ετÑ¡¿Ñ¼ ß½πτá∩, ¬«úñá ó »α«Γ«Γ¿»Ñ «»πΘÑ¡
- ¬á¬«⌐-½¿í« áαúπ¼Ñ¡Γ). Æ¿»δ ñ«½ª¡δ íδΓ∞ ß«ó¼ÑßΓ¿¼δ Γ«½∞¬« »«
- αẼÑαπ, ñ½∩ Γ«ú« τΓ«íδ ¬«ααÑ¬Γ¡« »α«¿ºó«ñ¿½¿ß∞ »αÑ«íαẫóá¡¿∩
- Γ¿»«ó. éδ óßÑúñá ñ«½ª¡δ ¿ß»«½∞º«óáΓ∞ ∩ó¡δÑ »αÑ«íαẫóá¡¿∩ áαúπ-
- ¼Ñ¡Γ«ó ¬ Γ¿»π, ñ«»πßΓ¿¼«¼π ñ½∩ »α«Γ«Γ¿»á Σπ¡¬µ¿¿.
-
- ÅÉêîàÉ:
-
- int strcmp(char *s1, char *s2); /* Å«½¡δ⌐ »α«Γ«Γ¿» */
- int *strcpy(); /* ìÑΓ »α«Γ«Γ¿»á */
- int samp1(foat, int, ...); /* Å«½¡δ⌐ »α«Γ«Γ¿» */
-
- samp2()
- {
- char *sx, *cp;
- double z;
-
- - 22 -
-
-
-
-
- long a;
- float q;
-
- if(strcmp(sx, cp)) /* 1. éÑα¡« */
- strcpy(sx, cp, 44); /* 2. êñÑΓ Γ«½∞¬« ñ½∩ Turbo-C */
- samp1(3, a, q); /* 3. éÑα¡« */
- strcpy(cp); /* 4. ÄΦ¿í¬á »α¿ óδ»«½¡Ñ¡¿¿ */
- samp1(2); /* 5. ÄΦ¿í¬á »α¿ ¬«¼»¿½∩µ¿¿ */
- }
-
- é 1 ó맮óÑ (ß¼. ¡π¼Ñαᵿε ó ¬«¼¼Ñ¡Γáα¿∩σ) ¿ß»«½∞º«óá¡¿Ñ
- Σπ¡¬µ¿¿ strcmp ∩ó¡« ß««ΓóÑΓßΓóπÑΓ »α«Γ«Γ¿»π ¿ ¬«ααÑ¬Γ¡« ñ½∩
- óßÑσ ß½πτáÑó.
-
- é« 2 ó맮óÑ (strcpy) ¿¼ÑÑΓß∩ ½¿Φ¡¿⌐ áαúπ¼Ñ¡Γ (strcpy «»αÑ-
- ñѽѡá ñ½∩ ñóπσ áαúπ¼Ñ¡Γ«ó, á ¡Ñ ñ½∩ 3-Ñσ). é φΓ«¼ ß½πτáÑ Tur-
- bo-C ΓÑα∩ÑΓ ¡Ñí«½∞Φ«Ñ ¬«½¿τÑßΓó« óαѼѡ¿ ¿ úÑ¡Ñα¿Γ ¬«ñ ñ½∩ »«-
- ¼ÑΘÑ¡¿∩ ½¿Φ¡Ñú« áαúπ¼Ñ¡Γá ó ßΓѬ. ¥Γ«, «ñ¡á¬«, ¡Ñ ∩ó½∩ÑΓß∩ ß¿¡-
- Γá¬ß¿τÑ߬«⌐ «Φ¿í¬«⌐, Γ.¬. ¬«¼»¿½∩Γ«α ¡Ñ º¡áÑΓ « τ¿ß½Ñ áαúπ¼Ñ¡-
- Γ«ó strcpy. Æá¬«⌐ ó맮ó ¡Ñ ñ«»πßΓ¿¼ ñ½∩ ñαπú¿σ ¬«¼»¿½¿Γ«α«ó.
-
- é 3-Ѽ »α¿¼ÑαÑ »α«Γ«Γ¿» ΓαÑíπÑΓ, τΓ«íδ 1 áαúπ¼Ñ¡Γ ñ½∩
- samp1 íδ½ »αÑ«íαẫóá¡ ¬ float, á 2-«⌐ - ¬ int. 諼»¿½∩Γ«α
- óδñáßΓ »αÑñπ»αѪñÑ¡¿Ñ « 󫺼«ª¡«⌐ »«ΓÑαÑ º¡áτ¿¼δσ µ¿Σα óß½ÑñßΓ-
- ó¿Ñ Γ«ú«, τΓ« »α¿ »αÑ«íαẫóá¡¿¿ Γ¿»á long ¬ Γ¿»π int «Γíαáßδ-
- óáεΓß∩ óÑασ¡¿Ñ í¿Γδ. éδ ¼«ªÑΓÑ ¿ºíáó¿Γ∞ß∩ «Γ óδñáτ¿ Γᬫú« »αÑ-
- ñπ»αѪñÑ¡¿∩, Ñß½¿ ºáñáñ¿ΓÑ ∩ó¡«Ñ »αÑ«íαẫóá¡¿Ñ ¬ µÑ½«¼π. ÆαÑ-
- Γ¿⌐ áαúπ¼Ñ¡Γ, q, ß««ΓóÑΓßΓóπÑΓ «»πΘÑ¡¡«¼π áαúπ¼Ñ¡Γπ ó
- »α«Γ«Γ¿»Ñ. Ä¡ »αÑ«íαáºπÑΓß∩ ¬ Γ¿»π double ß«ú½áß¡« «íδτ¡«¼π
- áα¿Σ¼ÑΓ¿τÑ߬«¼π »αÑ«íαẫóá¡¿ε. éÑß∞ óδº«ó ¬«ααѬΓÑ¡.
-
- é 4 ó맮óÑ ß¡«óá óßΓαÑτáÑΓß∩ «íαáΘÑ¡¿Ñ ¬ strcpy, ¡« τ¿ß½«
- áαúπ¼Ñ¡Γ«ó ß½¿Φ¬«¼ ¼á½«. ¥Γ« ó맮óÑΓ «Φ¿í¬π »α¿ óδ»«½¡Ñ¡¿¿
- »α«úαá¼¼δ. 諼»¿½∩Γ«α ªÑ ¡¿τÑú« ¡Ñ ß««íΘ¿Γ (Ñß½¿ ñáªÑ τ¿ß½« »á-
- αá¼ÑΓα«ó «Γ½¿τáÑΓß∩ «Γ τ¿ß½á »áαá¼ÑΓα«ó ó »αÑñδñπΘѼ ó맮óÑ Γ«⌐
- ªÑ Σπ¡¬µ¿¿), Γ.¬. ñ½∩ strcpy ¡ÑΓ »α«Γ«Γ¿»á Σπ¡¬µ¿¿.
-
- é 5 ó맮óÑ ñ½∩ Σπ¡¬µ¿¿ samp1 ºáñá¡« ß½¿Φ¬«¼ ¼á½« áαúπ¼Ñ¡-
- Γ«ó. Æ.¬. samp1 ΓαÑíπÑΓ ¼¿¡¿¼π¼ 2 áαúπ¼Ñ¡Γá, φëà «»ÑαáΓ«α ∩ó-
- ½∩ÑΓß∩ «Φ¿í«τ¡δ¼. 諼»¿½∩Γ«α óδñáßΓ ß««íΘÑ¡¿Ñ « Γ«¼, τΓ« ó
- ó맮óÑ ¡Ñ σóáΓáÑΓ áαúπ¼Ñ¡Γ«ó.
-
- Å_α_¿_¼_Ñ_τ_á_¡_¿_Ñ. àß½¿ óáΦ »α«Γ«Γ¿» Σπ¡¬µ¿¿ ¡Ñ ß««ΓóÑΓßΓóπÑΓ
- ñÑ⌐ßΓó¿Γѽ∞¡«¼π «»αÑñѽѡ¿ε Σπ¡¬µ¿¿, Turbo-C «í¡áαπª¿Γ φΓ« ó
- Γ«¼ ¿ Γ«½∞¬« ó Γ«¼ ß½πτáÑ, Ñß½¿ φΓ« «»αÑñѽѡ¿Ñ ¡áσ«ñ¿Γß∩ ó Γ«¼
- ªÑ Σá⌐½Ñ, τΓ« ¿ »α«Γ«Γ¿». àß½¿ óδ ß«ºñáÑΓÑ í¿í½¿«ΓѬπ »α«úαá¼¼
- ß ß««ΓóÑΓßΓóπεΘ¿¼ ßí«α¡¿¬«¼ »α«Γ«Γ¿»«ó (include-Σá⌐½«¼), óδ
- ñ«½ª¡δ πτ¿ΓδóáΓ∞ ó¬½ετÑ¡¿Ñ Σá⌐½á ß »α«Γ«Γ¿»á¼¿ ó« óαѼ∩ ¬«¼»¿-
- ½∩µ¿¿ í¿í½¿«ΓѬ¿, ñ½∩ Γ«ú« τΓ«íδ «Γ½«ó¿Γ∞ ½εí«Ñ »α«Γ¿ó«αÑτ¿Ñ
- ¼Ñªñπ »α«Γ«Γ¿»á¼¿ ¿ ñÑ⌐ßΓó¿Γѽ∞¡δ¼¿ «»αÑñѽѡ¿∩¼¿ Σπ¡¬µ¿⌐.
-
-
-
-
-
- - 23 -
-
-
-
-
- 1.13. Åαáó¿½á ó¿ñ¿¼«ßΓ¿ (K&R 11)
-
-
- Åαáó¿½á ó¿ñ¿¼«ßΓ¿ - φΓ« »αáó¿½á, «»αÑñѽ∩εΘ¿Ñ, ó ¬á¬¿σ
- τáßΓ∩σ ΓѬßΓá »α«úαá¼¼δ ¼«ªÑΓ íδΓ∞ ¿ß»«½∞º«óá¡á »ÑαѼѡ¡á∩ ó
- ºáó¿ß¿¼«ßΓ¿ «Γ Γ«ú«, úñÑ ¿ ¬á¬ «¡á «»¿ßá¡á.
-
- Turbo-C αáºαÑΦáÑΓ í«½ÑÑ ó«½∞¡«Ñ «íαáΘÑ¡¿Ñ ß ¡Ñπ¡¿¬á½∞¡δ¼¿
- ¿ñÑ¡Γ¿Σ¿¬áΓ«αἿ, τѼ Γ«ú« ΓαÑíπÑΓ K&R. Éẽ¿τáεΓ 4 ¬½áßßá
- ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó:
-
- ê¼Ñ¡á, «»¿ßδóáѼδÑ ß »«¼«Θ∞ε ß½«óá typedef, »ÑαѼѡ¡δÑ,
- τ½Ñ¡δ »ÑαÑτ¿ß½Ñ¡¿∩ ñ«½ª¡δ íδΓ∞ π¡¿¬á½∞¡δ¼¿ ó¡πΓα¿ í½«¬á, ó ¬«-
- Γ«α«¼ «¡¿ «»¿ßá¡δ. êñÑ¡Γ¿Σ¿¬áΓ«αδ, «íΩ∩ó½Ñ¡¡δÑ ó¡ÑΦ¡¿¼¿, ñ«½ª¡δ
- íδΓ∞ π¡¿¬á½∞¡δ¼¿ ßαÑñ¿ »ÑαѼѡ¡δσ, «»¿ßá¡¡δσ ¬á¬ ó¡ÑΦ¡¿Ñ.
-
- æΓαπ¬Γπαá, «íΩÑñ¿¡Ñ¡¿Ñ, »α¿º¡á¬¿ »ÑαÑτ¿ß½Ñ¡¿∩ ñ«½ª¡δ íδΓ∞
- π¡¿¬á½∞¡δ¼¿ ó¡πΓα¿ í½«¬á, ó ¬«Γ«α«¼ «¡¿ «»¿ßá¡δ. Åਧ¡á¬¿, «»¿-
- ßá¡¡δÑ ó¡Ñ »αÑñѽ«ó ¬á¬«⌐-½¿í« Σπ¡¬µ¿¿, ñ«½ª¡δ íδΓ∞ π¡¿¬á½∞¡δ
- ßαÑñ¿ óßÑσ »α¿º¡á¬«ó, «»¿ßá¡¡δσ ¬á¬ ó¡ÑΦ¡¿Ñ.
-
- ê¼Ñ¡á ßΓαπ¬Γπαδ ¿ τ½Ñ¡á «íΩÑñ¿¡Ñ¡¿∩ ñ«½ª¡δ íδΓ∞ π¡¿¬á½∞¡δ
- ó ßΓαπ¬ΓπαÑ ¿½¿ «íΩÑñ¿¡Ñ¡¿¿, ó ¬«Γ«αδσ «¡¿ «»¿ßá¡δ. ìÑ ßπΘÑßΓ-
- óπÑΓ ¡¿¬á¬¿σ «úαá¡¿τÑ¡¿⌐ ¡á Γ¿» ¿½¿ ß¼ÑΘÑ¡¿Ñ ñ½∩ τ½Ñ¡«ó ß «ñ¿-
- ¡á¬«óδ¼ ¿¼Ñ¡á¼¿ ó αẽ¿τ¡δσ ßΓαπ¬Γπαáσ.
-
- Ä»ÑαáΓ«αδ GOTO ¡á ¼ÑΓ¬π ñ«½ª¡δ ¿ß»«½∞º«óáΓ∞ß∩ ½¿Φ∞ ó Γ«⌐
- Σπ¡¬µ¿¿, úñÑ «íΩ∩ó½Ñ¡á ñá¡¡á∩ ¼ÑΓ¬á. îÑΓ¬á, ó ßó«ε «τÑαÑñ∞,
- ñ«½ª¡á íδΓ∞ π¡¿¬á½∞¡á ñ½∩ Σπ¡¬µ¿¿, ó ¬«Γ«α«⌐ «¡á «íΩ∩ó½Ñ¡á.
-
-
- 1.14. 諼á¡ñδ π»αáó½Ñ¡¿∩ Γαá¡ß½∩µ¿Ñ⌐ (R&K 12)
-
-
- Turbo-C »«ññÑনóáÑΓ óßÑ π»αáó½∩εΘ¿Ñ ¬«¼á¡ñδ, «»¿ßá¡¡δÑ ó
- K&R. ¥Γ¿¼¿ ¬«¼á¡ñἿ ∩ó½∩εΓß∩ ñ¿αÑ¬Γ¿óδ »αÑ»α«µÑßß«αá - ßΓ᫬¿
- ¿ßσ«ñ¡«⌐ »α«úαá¼¼δ, ¡áτ¿¡áεΘ¿Ñß∩ ß« º¡á¬á #.
-
-
- 1.14.1. çá¼Ñ¡á ½Ñ¬ßѼ (K&R 12.1)
-
-
- Turbo-C óδ»«½¡∩ÑΓ óßÑ «»αÑñѽѡ¿∩ #define ¿ #undef, «»¿-
- ßá¡¡δÑ ó R&K, ß« ß½ÑñπεΘ¿¼¿ ñ«»«½¡Ñ¡¿∩¼¿:
-
- 1. æ½ÑñπεΘ¿Ñ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ ¡Ñ «í∩ºáΓѽ∞¡« ñ«½ª¡δ óßΓαÑ-
- τáΓ∞ß∩ ó ñ¿αÑ¬Γ¿óáσ #define ¿ #undef:
-
- _STDC_
-
- _FILE_
-
- _LINE_
-
-
- - 24 -
-
-
-
-
-
- _DATE_
-
- _TIME_
-
- 2. é ¼á¬α««»αÑñѽѡ¿Ñ ¼«úπΓ íδΓ∞ óßΓáó½Ñ¡δ ñóÑ ½Ñ¬ßѼδ
- ó¼ÑßΓÑ, αáºñѽѡ¡δÑ º¡á¬á¼¿ ##, ¡á»α¿¼Ñα:
-
- #define VAR(i,j) (i ## j)
-
- Åα¿ φΓ«¼ VAR(x,6) ó맮óÑΓ »«ñßΓá¡«ó¬π x6. ¥Γ« ºá¼Ñ¡∩ÑΓ
- ¿¡«úñá π»«ΓαÑí½∩Ѽδ⌐, ¡« ¡Ñ »ÑαÑ¡«ß¿¼δ⌐ ¼ÑΓ«ñ ¿ß»«½∞º«óá¡¿∩
- (i/**/j).
-
- 3. 齫ªÑ¡¡δÑ ¼á¬α«ßδ ó ßΓα«¬Ñ ¼á¬α«-«»αÑñѽѡ¿∩ ßαáí«ΓáεΓ
- ½¿Φ∞ Γ«úñá, ¬«úñá ßαáí«ΓáÑΓ ßá¼ ¼á¬α«ß, á ¡Ñ »α¿ Ñú« «»¿ßá¡¿¿.
- ¥Γ« í«½∞ΦÑ ¬áßáÑΓß∩ 󽫪ѡ¡δσ ¼á¬α«ß«ó #undef.
-
- 4. æ¿¼ó«½ #, »«¼ÑΘáѼδ⌐ »ÑαÑñ ¼á¬α«áαúπ¼Ñ¡Γ«¼, π¬áºδóáÑΓ «
- »αÑ«íαẫóá¡¿¿ Ñú« ó ßΓ᫬π. Åα¿ ¼á¬α«»«ñßΓá¡«ó¬Ñ »α«¿ºó«ñ¿Γß∩
- ºá¼Ñ¡á #<Σ«α¼á½∞¡δ⌐ áαúπ¼Ñ¡Γ> ¡á "<ñÑ⌐ßΓó¿Γѽ∞¡δ⌐ áαúπ¼Ñ¡Γ>".
- Æá¬, »α¿ ºáñá¡¿¿ ¼á¬α««»αÑñѽѡ¿∩
-
- #define TRACE(flag) printf(#flag "= %d\n", flag)
-
- ß½ÑñπεΘ¿⌐ Σαáú¼Ñ¡Γ ΓѬßΓá »α«úαá¼¼δ
-
- highval = 1024;
-
- TRACE(highval);
-
- »αÑ«íαáºπÑΓß∩:
-
- highval = 1024;
-
- printf("highval" "= %d\n", highval);
-
- 5. é «Γ½¿τ¿Ñ «Γ ñαπú¿σ αÑ὿ºáµ¿⌐, Turbo-C ¡Ñ «ßπΘÑßΓó½∩ÑΓ
- »«ñßΓá¡«ó«¬ ¼á¬α«áαúπ¼Ñ¡Γ«ó ó¡πΓα¿ ßΓ᫬ ¿ ß¿¼ó«½∞¡δσ ¬«¡ßΓá¡Γ.
-
-
- 1.14.2. 鬽ετÑ¡¿Ñ Σá⌐½á (K&R 12.2)
-
-
- Turbo-C ¿ß»«½∞ºπÑΓ ñ¿αÑ¬Γ¿óπ ΓᬠªÑ, ¬á¬ «»¿ßá¡« ó K&R, ¡«
- ßπΘÑßΓóπεΓ ¡Ñ¬«Γ«αδÑ ñ«»«½¡¿Γѽ∞¡δÑ «ß«íÑ¡¡«ßΓ¿: àß½¿ »αÑ»α«-
- µÑßß«α ¡Ñ ¡áΦѽ include-Σá⌐½ ó ¬áΓὫúÑ, πßΓá¡«ó½Ñ¡¡«¼ »« π¼«½-
- τá¡¿ε (»αÑ»«½áúáÑΓß∩, τΓ« óδ ¿ß»«½∞ºπÑΓÑ Σ«α¼π
-
- include "filename"), Γ«úñá «¡ ¿ΘÑΓ ¬áΓὫú¿, ºáñá¡¡δÑ «»-
- µ¿Ñ⌐ ¬«¼»¿½∩Γ«αá -I. àß½¿ óδ ¿ß»«½∞ºπÑΓÑ Σ«α¼π #include
- <filenamr>, Γ«úñá ¿ΘπΓß∩ Γ«½∞¬« ¬áΓὫú¿, ºáñá¡¡δÑ «»µ¿Ñ⌐ -I.
- (èáΓὫú¿, »ÑαÑτ¿ß½∩ѼδÑ ó ¼Ñ¡ε »« «»µ¿¿ O/Environment/Include,
- φ¬ó¿óá½Ñ¡Γ¡δ ¬áΓὫúá¼, ºáñá¡¡δ¼ ß »«¼«Θ∞ε «»µ¿¿ -I pathname ó
-
- - 25 -
-
-
-
-
- ¬«¼á¡ñ¡«⌐ ßΓ᫬Ñ.
-
- éδ ¼«ªÑΓÑ ºáñáΓ∞ ¿¼∩ »πΓ¿ #include, ó¬½ετáεΘÑÑ úαá¡¿τ¡δÑ
- αáºñѽ¿Γѽ¿, ¿ß»«½∞ºπ∩ ¼á¬α«αáßΦ¿αÑ¡¿Ñ. àß½¿ ß½ÑñπεΘá∩ ßΓ᫬á
- »«ß½Ñ ¬½ετÑó«ú« ß½«óá ¡áτ¿¡áÑΓß∩ ß ¿ñÑ¡Γ¿Σ¿¬áΓ«αá, »αÑ»α«µÑßß«α
- »α«ß¼áΓα¿óáÑΓ ΓѬßΓ ñ½∩ ¼á¬α«ßá. Äñ¡á¬«, Ñß½¿ ßΓα«¬á ºá¬½ετÑ¡á
- ó ¬áóδτ¬¿ ¿½¿ ó πú«½∞¡δÑ ß¬«í¬¿, Turbo-C ¡Ñ íπñÑΓ »α«óÑα∩Γ∞ ÑÑ
- ñ½∩ ºá»«¼¿¡á¡¿∩ ¼á¬α«ßá. ìá»α¿¼Ñα,
-
- #define myinclude "c:\tc\include\mystuff.h"
-
- #include myinclude
-
- #include "myinclude"
-
- 1-δ⌐ #include-«»ÑαáΓ«α ºáßΓáó¿Γ »αÑ»α«µÑßß«α »α«ß¼áΓα¿óáΓ∞
- C:\TC\INCLUDE\MYSTUFF.H, Γ«úñá ¬á¬ 2-«⌐ ó맮óÑΓ »α«ß¼«Γα MYINC-
- LUDE.H ó ¬áΓὫúÑ »« π¼«½τá¡¿ε.
-
- éδ ¼«ªÑΓÑ ¡Ñ ¿ß»«½∞º«óáΓ∞ «íΩÑñ¿¡Ñ¡¿Ñ ½¿ΓÑα¡δσ ßΓ᫬ ¿
- óßΓáó¬π ½Ñ¬ßѼ ó ¼á¬α«ßÑ, ¬«Γ«αδ⌐ ¿ß»«½∞ºπÑΓß∩ ó «»ÑαáΓ«αÑ
- include. îá¬α«αáßΦ¿αÑ¡¿Ñ ñ«½ª¡« úÑ¡Ñα¿Γ∞ ΓѬßΓ, ¬«Γ«αδ⌐ τ¿ΓáÑΓ-
- ß∩ ¬á¬ ¡«α¼á½∞¡á∩ #include-ñ¿αÑ¬Γ¿óá.
-
-
- 1.14.3. ôß½«ó¡á∩ ¬«¼»¿½∩µ¿∩ (K&R 12.3)
-
-
- Turbo-C »«ññÑনóáÑΓ «»αÑñѽѡ¿Ñ πß½«ó¡«⌐ ¬«¼»¿½∩µ¿¿ K&R ß
- »«¼«Θ∞ε ºá¼Ñ¡δ ß««ΓóÑΓßΓóπεΘ¿σ ßΓ᫬ ¡á »πßΓδÑ. æΓ᫬¿, ¿ú¡«α¿-
- απѼδÑ Γ.«., ¡áτ¿¡áεΓß∩ ß ñ¿αÑ¬Γ¿ó #if, #ifdef, #ifndef, #else,
- #elif,
-
- endif, Γá¬ªÑ ¬á¬ ¿ óßÑ ¡Ñ¬«¼»¿½¿απѼδÑ ßΓ᫬¿, ∩ó½∩εΘ¿Ñß∩
- αѺπ½∞ΓáΓ«¼ φΓ¿σ ñ¿αÑ¬Γ¿ó. éßÑ ñ¿αÑ¬Γ¿óδ πß½«ó¡«⌐ ¬«¼»¿½∩µ¿¿
- ñ«½ª¡δ ºá¬á¡τ¿óáΓ∞ß∩ ó ¿ßσ«ñ¡«⌐ »α«úαá¼¼Ñ ¿½¿ include-Σá⌐½Ñ, ó
- ¬«Γ«αδσ «¡¿ ¡áτ὿ß∞.
-
- Turbo-C »«ññÑনóáÑΓ Γá¬ªÑ «»ÑαáΓ«α ANSI-ßΓá¡ñáαΓá
- defined(symbol). Åα¿ßóá¿óáÑΓß∩ º¡áτÑ¡¿Ñ 1 (true), Ñß½¿ ß¿¼ó«½
- íδ½ »αÑñóáα¿Γѽ∞¡« «»αÑñѽѡ (ß ¿ß»«½∞º«ó᡿Ѽ #define) ¿ ºáΓѼ
- ¡Ñ íδ½ «Γ¼Ñ¡Ñ¡ (ß ¿ß»«½∞º«ó᡿Ѽ
-
- undef); ¿¡áτÑ »α¿ßóá¿óáÑΓß∩ 0 (false). Æá¬, ñ¿αÑ¬Γ¿óá
-
- #if defined(mysym)
-
- áñѬóáΓ¡á ñ¿αÑ¬Γ¿óÑ
-
- #ifdef mysym
-
- ÅαÑ¿¼πΘÑßΓó«¼ φΓ«ú« ∩ó½∩ÑΓß∩ 󫺼«ª¡«ßΓ∞ »«óΓ«α¡«ú« ¿ß-
- »«½∞º«óá¡¿∩ defined ó ß½«ª¡«¼ óδαáªÑ¡¿¿, ßΓ«∩ΘѼ »«ß½Ñ ñ¿αѬ-
- Γ¿óδ #if:
-
- - 26 -
-
-
-
-
-
- #if defined(mysym) || defined(yoursym)
-
- Turbo-C (ó «Γ½¿τ¿Ñ «Γ ANSI) »«ºó«½∩ÑΓ óá¼ ¿ß»«½∞º«óáΓ∞
- «»ÑαáΓ«α sizeof ó óδαáªÑ¡¿¿ ñ½∩ »αÑ»α«µÑßß«αá:
-
- #if (sizeof(void *) ==2)
- #define SDATA
- #else
- #define LDATA
- #endif
-
-
- 1.14.4. ô»αáó½Ñ¡¿Ñ ßΓα«¬á¼¿ (K&R 12.4)
-
-
- Turbo-C »«ññÑনóáÑΓ «»αÑñѽѡ¿Ñ #line, ñá¡¡«Ñ ó K&R.
-
-
- 1.14.5. ä¿αÑ¬Γ¿óá «íαáí«Γ¬¿ «Φ¿í«¬ (ANSI C 3.8.5)
-
-
- Turbo-C »«ññÑনóáÑΓ ñ¿αÑ¬Γ¿óπ #error, ¬«Γ«αá∩ π»«¼¿¡áÑΓß∩
- (¡« ¡Ñ «»αÑñѽ∩ÑΓß∩) ó ANSI-ßΓá¡ñáαΓÑ. àÑ Σ«α¼áΓ:
-
- #error errmsg
-
- àß½¿ óδ ó¬½ετ¿ΓÑ φΓπ ñ¿αÑ¬Γ¿óπ πß½«ó¡«⌐ ¬«¼»¿½∩µ¿¿ ó Σá⌐½
- ß óáΦÑ⌐ ¿ßσ«ñ¡«⌐ »α«úαá¼¼«⌐ ¿ πß½«ó¡δÑ ΓÑßΓ«óδÑ Σá⌐½δ, »αÑ»α«-
- µÑßß«α íπñÑΓ ßτ¿ΓδóáΓ∞ ñ¿αÑ¬Γ¿óπ #error ¿ ¡Ñ¼Ññ½Ñ¡¡« »αÑαδóáΓ∞-
- ß∩, óδñáóá∩ »α¿ φΓ«¼ ß½ÑñπεΘÑÑ ß««íΘÑ¡¿Ñ:
-
- Fatal: filename line# Error directive: errmsg
-
- ÅαÑ»α«µÑßß«α »α«ß¼áΓα¿óáÑΓ ΓѬßΓ ñ½∩ Γ«ú«, τΓ«íδ π¡¿τΓ«-
- ª¿Γ∞ ¬«¼¼Ñ¡Γáα¿¿, ¡« ¡á φ¬αá¡ óδó«ñ¿Γ «ßΓáóΦ¿⌐ß∩ ΓѬßΓ íѺ
- »α«ß¼«Γαá ñ½∩ óδ∩ó½Ñ¡¿∩ ¼á¬α«ß«ó.
-
-
- 1.14.6. ä¿αÑ¬Γ¿óá PRAGMA (ANSI C 3.8.6)
-
-
- Turbo-C »«ññÑনóáÑΓ ñ¿αÑ¬Γ¿óπ #pragma, ¬«Γ«αá∩ (¬á¬ ¿
-
- error), ¡Ñ∩ß¡« «»αÑñѽ∩ÑΓß∩ ó ANSI-ßΓá¡ñáαΓÑ. àÑ µÑ½∞ε ∩ó-
- ½∩ÑΓß∩ αáºαÑΦ¿Γ∞ ߻ѵ¿á½¿º¿α«óá¡¡δÑ ñ¿αÑ¬Γ¿óδ:
-
- #pragma <directive name>
-
- æ »«¼«Θ∞ε #pragma Turbo-C ¼«ªÑΓ «»αÑñѽ¿Γ∞ ½εíδÑ
- ñ¿αÑ¬Γ¿óδ, ¬«Γ«αδÑ Ñ¼π ΓαÑíπεΓß∩, íѺ ó¼ÑΦáΓѽ∞ßΓóá ñαπú¿σ ¬«¼-
- »¿½∩Γ«α«ó, ¬«Γ«αδÑ »«ññÑনóáεΓ #pragma. Å«-«»αÑñѽѡ¿ε, Ñß½¿
- ¬«¼»¿½∩Γ«α ¡Ñ «»«º¡á½ ¿¼∩ ñ¿αÑ¬Γ¿óδ, «¡ ¿ú¡«α¿απÑΓ ñ¿αÑ¬Γ¿óπ
- pragma.
-
- - 27 -
-
-
-
-
- 1.14.6.1. #pragma inline
-
-
- Turbo-C αáß»«º¡áÑΓ ñóÑ ñ¿αÑ¬Γ¿óδ #pragma. ÅÑαóá∩:
-
- #pragma inline
-
- ¥Γá ñ¿αÑ¬Γ¿óá φ¬ó¿óá½Ñ¡Γ¡á «»µ¿¿ ¬«¼»¿½∩Γ«αá -B. Ä¡á ß««í-
- ΘáÑΓ ¬«¼»¿½∩Γ«απ « Γ«¼, τΓ« ó óáΦÑ⌐ »α«úαá¼¼Ñ »α¿ßπΓßΓóπεΓ áß-
- ßѼí½Ñα«ó߬¿Ñ ¼áΦ¿¡¡δÑ ¬«¼á¡ñδ. ì´πτΦÑÑ ÑÑ »«½«ªÑ¡¿Ñ - ó ¡á-
- τá½Ñ Σá⌐½á, Γ.¬. ¬«¼»¿½∩Γ«α ßἫ»ÑαѺá»π߬áÑΓß∩ ß «»µ¿Ñ⌐ -B
- ßαáºπ, ¬á¬ Γ«½∞¬« óßΓαÑΓ¿Γß∩ #pragma inline. ìá ßἫ¼ ñѽÑ, óδ
- ¼«ªÑΓÑ «»πßΓ¿Γ∞ ¿ «»µ¿ε -B, ¿ ñ¿αÑ¬Γ¿óπ #pragma inline, Γ.¬.
- ¬«¼»¿½∩Γ«α óßÑ αáó¡« ß«¼«»ÑαѺá»π߬áÑΓß∩, ¬á¬ Γ«½∞¬« óßΓαÑΓ¿Γ
- asm-«»ÑαáΓ«αδ; µÑ½∞ε φΓ«⌐ «»µ¿¿ ¿ ñ¿αÑ¬Γ¿óδ ∩ó½∩ÑΓß∩ φ¬«¡«¼¿∩
- óαѼѡ¿ ¬«¼»¿½∩µ¿¿.
-
-
- 1.14.6.2. #pragma warn
-
-
- äαπúá∩ #pragma-ñ¿αÑ¬Γ¿óá - φΓ«
-
- pragma warn
-
- äá¡¡á∩ ñ¿αÑ¬Γ¿óá »«ºó«½∩ÑΓ óá¼ ¡Ñ »α¿¡¿¼áΓ∞ ó« 󡿼᡿Ñ
- ߻ѵ¿á½∞¡πε «»µ¿ε ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ -wxxx («»µ¿∩ ó¬½ετÑ¡¿∩ ß»Ñ-
- µ¿á½∞¡δσ »αÑñπ»αÑñ¿Γѽ∞¡δσ ß««íΘÑ¡¿⌐).
-
- ìá»α¿¼Ñα, Ñß½¿ óáΦá ¿ßσ«ñ¡á∩ »α«úαá¼¼á ß«ñÑαª¿Γ ñ¿αÑ¬Γ¿óδ:
-
- #pragma warn +xxx
- #pragma warn -yyy
- #pragma warn .zzz
-
- Γ« xxx ó¬½ετ¿Γ óδñáτπ »αÑñπ»αÑñ¿Γѽ∞¡δσ ß««íΘÑ¡¿⌐ (Ñß½¿
- ñáªÑ ó »«ñ¼Ñ¡ε O/C/Errors/ «¡á íδ½á ó䬽ετÑ¡á); yyy ó䬽ετ¿Γ
- óδñáτπ ß««íΘÑ¡¿⌐; á zzz ó«ßßΓá¡«ó¿Γ »Ñαó«¡áτá½∞¡«Ñ º¡áτÑ¡¿Ñ,
- ¬«Γ«α«Ñ í佫 ó ¡áτá½Ñ ¬«¼»¿½∩µ¿¿ Σá⌐½á.
-
- Ĭ«¡τáΓѽ∞¡δ⌐ ß»¿ß«¬ 3-íπ¬óÑ¡¡δσ áííαÑó¿áΓπα ¿ ß««íΘÑ¡¿⌐,
- ¬«Γ«αδÑ «¡¿ ó¬½ετáεΓ ¿ ó䬽ετáεΓ, »α¿óÑñÑ¡ ó Åα¿½«ªÑ¡¿¿ 3
- æß佫τ¡«ú« Éπ¬«ó«ñßΓóá »« Turbo-C.
-
-
- 1.14.7. ìπ½Ñóá∩ ñ¿αÑ¬Γ¿óá (ANSI C 3.7)
-
-
- Éáñ¿ ºáóÑαΦÑ¡¡«ßΓ¿, ANSI-ßΓá¡ñáαΓ ¿ Turbo-C «»«º¡áεΓ »πß-
- Γπε ñ¿αÑ¬Γ¿óπ, ß«ßΓ«∩Θπε ¿º ßΓ᫬¿, ß«ñÑαªáΘÑ⌐ »α«ßΓ« º¡á¬ #.
- ¥Γá ñ¿αÑ¬Γ¿óá óßÑúñá ¿ú¡«α¿απÑΓß∩.
-
-
-
-
- - 28 -
-
-
-
-
- 1.14.8. éßΓα«Ñ¡¡δÑ ¼á¬α«-¿¼Ñ¡á
-
-
- ANSI-ßΓá¡ñáαΓ ΓαÑíπÑΓ 5 óßΓα«Ñ¡¡δσ ¼á¬α«ß«ó. Turbo-C »α¿-
- ¼Ñ¡∩ÑΓ óßÑ 5. ÄΓ¼ÑΓ¿¼, τΓ« ¬áªñδ⌐ ¿º ¡¿σ ¡áτ¿¡áÑΓß∩ ¿ «¬á¡τ¿-
- óáÑΓß∩ ß¿¼ó«½«¼ »«ñτÑનóá¡¿∩ (__).
-
- _LINE_
- 쫼Ñα «íαáíáΓδóáѼ«⌐ ßΓ᫬¿ ¿ßσ«ñ¡«⌐ »α«úαá¼¼δ - ñÑß∩-
- Γ¿τ¡á∩ ¬«¡ßΓá¡Γá. ÅÑαóá∩ ßΓα«¬á ¿ßσ«ñ¡«ú« Σá⌐½á «»αÑñÑ-
- ½Ñ¡á ¬á¬ 1.
-
- _FILE_
- ê¼∩ «íαáíáΓδóáѼ«ú« ¿ßσ«ñ¡«ú« Σá⌐½á - ½¿ΓÑα¡á∩ ßΓ᫬á.
-
- äá¡¡«Ñ ¼á¬α««»αÑñѽѡ¿Ñ ¿º¼Ñ¡∩ÑΓß∩ óß∩¬¿⌐ αáº, ¬á¬ ¬«¼-
- »¿½∩Γ«α «íαáíáΓδóáÑΓ ñ¿αÑ¬Γ¿óπ #include ¿½¿ ñ¿αÑ¬Γ¿óπ
- line, ¿½¿ ¬«úñá ºá¬«¡τ¿½ß∩ #include-Σá⌐½.
-
- _DATE_
- äáΓá ¡áτá½á «íαáí«Γ¬¿ ΓѬπΘÑú« ¿ßσ«ñ¡«ú« Σá⌐½á - ½¿ΓÑα-
- ¡á∩ ßΓ᫬á.
-
- èáªñ«Ñ óσ«ªñÑ¡¿Ñ _DATE_ ó ºáñá¡¡δ⌐ Σá⌐½ úáαá¡Γ¿απÑΓ «ñ¡«
- º¡áτÑ¡¿Ñ, ¡Ñºáó¿ß¿¼« «Γ Γ«ú«, ¬á¬ ñ«½ú« πªÑ »α«ñ«½ªáÑΓß∩
- «íαáí«Γ¬á. äáΓá ¿¼ÑÑΓ Σ«α¼áΓ mmmddyyyy, úñÑ mmm - ¼Ñß∩µ
- (Jan, Feb ¿ Γ.ñ.), dd - τ¿ß½« ΓѬπΘÑú« ¼Ñß∩µá (1...31; ó
- 1-«⌐ ¿º ñóπσ »«º¿µ¿⌐ dd ßΓáó¿Γß∩ »α«íѽ, Ñß½¿ τ¿ß½«
- ¼Ñ¡∞ΦÑ 10), yyyy - ú«ñ (1987, 1988 ¿ Γ.ñ.).
-
- _TIME_
- éαѼ∩ ¡áτá½á «íαáí«Γ¬¿ ΓѬπΘÑú« ¿ßσ«ñ¡«ú« Σá⌐½á - ½¿ΓÑα-
- ¡á∩ ßΓ᫬á.
-
- èáªñ«Ñ óσ«ªñÑ¡¿Ñ _TIME_ ó ºáñá¡¡δ⌐ Σá⌐½ úáαá¡Γ¿απÑΓ «ñ¡«
- º¡áτÑ¡¿Ñ, ¡Ñºáó¿ß¿¼« «Γ Γ«ú«, ¬á¬ ñ«½ú« πªÑ »α«ñ«½ªáÑΓß∩
- «íαáí«Γ¬á. éαѼ∩ ¿¼ÑÑΓ Σ«α¼áΓ hh:mm:ss, úñÑ hh - τáß
- (00...23), mm - ¼¿¡πΓδ (00...59), ss - ßѬπ¡ñδ
- (00...59).
-
- _STDC_
- è«¡ßΓá¡Γá, αáó¡á∩ 1, Ñß½¿ óδ ¬«¼»¿½¿απÑΓÑ ß Σ½áú«¼ -a,
- ¬«Γ«αδ⌐ πßΓá¡áó½¿óáÑΓ ß«ó¼ÑßΓ¿¼«ßΓ∞ ß ANSI-ßΓá¡ñáαΓ«¼
- (ANSI keywords only ... ON); ¿¡áτÑ ¼á¬α««»αÑñѽѡ¿Ñ ¡Ñ
- «»αÑñѽѡ«.
-
-
- 1.14.9. éßΓα«Ñ¡¡δÑ ¼á¬α«ßδ Turbo-C
-
-
- ÅαÑ»α«µÑßß«α Turbo-C «»αÑñѽ∩ÑΓ αẽ¿τ¡δÑ ñ«»«½¡¿Γѽ∞¡δÑ
- ¼á¬α«ßδ. Æá¬ªÑ, ¬á¬ ñ½∩ ¼á¬α«ß«ó, »αÑñ»¿ßá¡¡δσ ANSI-ßΓá¡ñáαΓ«¼,
- ¬áªñδ⌐ ¿º ¡¿σ ¡áτ¿¡áÑΓß∩ ¿ «¬á¡τ¿óáÑΓß∩ ß¿¼ó«½«¼ »«ñτÑનóá¡¿∩
- (__).
-
- - 29 -
-
-
-
-
-
- _TURBOC_
- éδñáτá ¡«¼Ñαá ΓѬπΘÑ⌐ óÑαß¿¿ Turbo-C - ΦÑß¡áñµáΓÑα¿τ¡á∩
- ¬«¡ßΓá¡Γá. éÑαß¿∩ 1.0 »αÑñßΓáó½∩ÑΓß∩ ¬á¬ 0x0100; óÑαß¿∩
- 1.2 - ¬á¬ 0x0102 ¿ Γ.ñ.
-
- _PASCAL_
- Ä»αÑñѽ∩ÑΓ º¡áτÑ¡¿Ñ Σ½áúá -p; πßΓá¡áó½¿óáÑΓß∩ ó µÑ½πε
- ¬«¡ßΓá¡Γπ, αáó¡πε 1, Ñß½¿ ¿ß»«½∞ºπÑΓß∩ Σ½áú -p; ¿¡áτÑ ¡Ñ
- «»αÑñѽѡ«.
-
- _MSDOS_
- ûѽá∩ ¬«¡ßΓá¡Γá, αáó¡á∩ 1.
-
- _CDECL_
- Ä»αÑñѽ∩ÑΓ º¡áτÑ¡¿Ñ Σ½áúá -p; πßΓá¡áó½¿óáÑΓß∩ ó µÑ½πε
- ¬«¡ßΓá¡Γπ, αáó¡πε 1, Ñß½¿ Σ½áú -p ¡Ñ ¿ß»«½∞ºπÑΓß∩; ¿¡áτÑ
- ¡Ñ «»αÑñѽѡ«.
-
- æ½ÑñπεΘ¿Ñ 6 ¼á¬α«ß«ó ºáó¿ß∩Γ «Γ óδíαá¡¡«⌐ ñ½∩ ¬«¼»¿½∩µ¿¿
- ¼«ñѽ¿ »á¼∩Γ¿. ä½∩ ½εí«⌐ ¬«¼»¿½∩µ¿¿ «»αÑñѽѡ ¼«ªÑΓ íδΓ∞ Γ«½∞¬«
- «ñ¿¡ ¿º ¡¿σ; «ßΓá½∞¡δÑ (»«-«»αÑñѽѡ¿ε) ¡Ñ «»αÑñѽѡδ.
- ìá»α¿¼Ñα, Ñß½¿ óδ ¬«¼»¿½¿απÑΓÑ ß ¼á½Ñ¡∞¬«⌐ ¼«ñѽ∞ε, «»αÑñѽѡ«
- _SMALL_, á «ßΓá½∞¡δÑ - ¡ÑΓ; »«φΓ«¼π ñ¿αÑ¬Γ¿óá #if
- defined(_SMALL_) íπñÑΓ ¿¼ÑΓ∞ º¡áτÑ¡¿Ñ true(óÑα¡«), ó Γ« óαѼ∩
- ¬á¬ #if defined(_HUGE_) (¿½¿ ½εíá∩ ñαπúá∩) íπñÑΓ ¿¼ÑΓ∞ º¡áτÑ¡¿Ñ
- fulse(½«ª¡«). äÑ⌐ßΓó¿Γѽ∞¡«Ñ º¡áτÑ¡¿Ñ ñ½∩ ½εí«ú« «»αÑñѽѡ¡«ú«
- ¼á¬α««»αÑñѽѡ¿∩ αáó¡« 1.
-
- _TINY_
- Ä»µ¿¿ óδí«αá ¬α«ΦÑτ¡«⌐ ¼«ñѽ¿ »á¼∩Γ¿.
-
- _SMALL_
- Ä»µ¿¿ óδí«αá ¼á½Ñ¡∞¬«⌐ ¼«ñѽ¿ »á¼∩Γ¿.
-
- _MEDIUM_
- Ä»µ¿¿ óδí«αá ßαÑñ¡Ñ⌐ ¼«ñѽ¿ »á¼∩Γ¿.
-
- _COMPACT_
- Ä»µ¿¿ óδí«αá ¬«¼»á¬Γ¡«⌐ ¼«ñѽ¿ »á¼∩Γ¿.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - 30 -
-
-
-
-
- 2. î«ñѽ¿ »á¼∩Γ¿ Turbo-C
-
-
-
-
-
- Turbo-C »«ññÑনóáÑΓ ΦÑßΓ∞ αẽ¿τ¡δσ ¼«ñѽÑ⌐ »á¼∩Γ¿: tiny,
- small, medium, compact, large ¿ huge.
-
- tiny
- ¥Γ« ßá¼á∩ ¼á½á∩ ¼«ñѽ∞ »á¼∩Γ¿. éßÑ τÑΓδαÑ αÑú¿ßΓαá ( CS,
- DS, SS, ES) ß«ñÑαªáΓ «ñ¿¡ ¿ ëà ªÑ áñαÑß, »«φΓ«¼π 64è
- óδñѽ∩εΓß∩ ñ½∩ σαá¡Ñ¡¿∩ ¬«ñá, ñá¡¡δσ ¿ ¼áßß¿ó«ó. éßÑúñá
- ¿ß»«½∞ºπεΓß∩ π¬áºáΓѽ¿ Γ¿»á near. Åα«úαá¼¼δ, ¿ß»«½∞ºπε-
- Θ¿Ñ ¼«ñѽ∞ »á¼∩Γ¿ tiny, ¼«úπΓ íδΓ∞ »αÑ«íαẫóá¡δ ¬ Σ«α-
- ¼áΓπ .COM.
-
- ìá »α¿óÑñÑ¡¡«¼ ¡¿ªÑ α¿ßπ¡¬Ñ »«¬áºá¡« αáß»αÑñѽѡ¿Ñ »á¼∩Γ¿.
-
- æÑú¼Ñ¡Γ¡δÑ ÉẼÑα
- αÑú¿ßΓαδ ßÑú¼Ñ¡Γá
- +------------------------+
- CS, DS, ES, SS ---| DGROUP | ñ« 64è íá⌐Γ
- +------------------------+
- | _TEXT ¬½áßß 'DATA' |
- | ¬«ñ |
- +------------------------+
- | _DATA ¬½áßß 'DATA' |
- | ¿¡¿µ¿á½¿º¿α«óá¡¡δÑ |
- | ñá¡¡δÑ |
- +------------------------+
- | _BSS ¬½áßß 'BSS' |
- | ¿¡¿µ¿á½¿º¿α«óá¡¡δÑ |
- | ñá¡¡δÑ |
- +------------------------+
- | èπτá |
- SP ---+------------------------+
- | æΓѬ |
- +------------------------+
-
- æÑú¼Ñ¡Γᵿ∩ »á¼∩Γ¿ ¼«ñѽ¿ tiny
-
- Å_α_¿_¼_Ñ_τ_á_¡_¿_Ñ. Ä»¿ßá¡¿Ñ «ßΓá½∞¡δσ ¼«ñѽÑ⌐ »á¼∩Γ¿ »α¿óÑñÑ-
- ¡« ó æ»αáó«τ¡«¼ απ¬«ó«ñßΓóÑ »« ¬«¼»¿½∩Γ«απ MSC.
-
-
- 2.1. êß»«½∞º«óá¡¿Ñ ß¼ÑΦá¡¡δσ ¼«ñѽÑ⌐ »á¼∩Γ¿:
- ¼«ñ¿Σ¿¬áΓ«αδ áñαÑßᵿ¿
-
-
- Turbo-C »«ññÑনóáÑΓ ßѼ∞ ¡«óδσ ¬½ετÑóδσ ß½«ó, ¡Ñ«»αÑñÑ-
- ½Ñ¡¡δσ ó K&R ¿ ßΓá¡ñáαΓÑ ANSI: near, far, huge, _cs, _ds, _es,
- _ss. Ä¡¿ ¼«úπΓ íδΓ∞ ¿ß»«½∞º«óá¡δ ß «»αÑñѽѡ¡δ¼¿ «úαá¡¿τÑ¡¿∩¼¿
- ¬á¬ ¼«ñ¿Σ¿¬áΓ«αδ ñ½∩ π¬áºáΓѽÑ⌐ (¿ ó ¡Ñ¬«Γ«αδσ ß½πτá∩σ ñ½∩
-
- - 31 -
-
-
-
-
- Σπ¡¬µ¿⌐).
-
- é Turbo-C ¼«ª¡« ¿º¼Ñ¡∩Γ∞ Σπ¡¬µ¿¿ ¿ π¬áºáΓѽ¿ ß ¬½ετÑó묨
- ß½«óἿ near, far ¿½¿ huge. è Σπ¡¬µ¿∩¼ Γ¿»á near (far,huge) «í-
- αáΘáεΓß∩ ß »«¼«Θ∞ε near (far, huge) ó맮ó«ó ¿ «¡¿ ó«ºóαáΘáεΓ
- Γ¿» near (far, huge).
-
- Å_α_¿_¼_Ñ_τ_á_¡_¿_Ñ. öπ¡¬µ¿¿ Γ¿»á huge ¼«úπΓ πßΓá¡«ó¿Γ∞ αÑú¿ßΓ-
- αÑ DS ó ¡«ó«Ñ º¡áτÑ¡¿Ñ, ó «Γ½¿τ¿Ñ «Γ Σπ¡¬µ¿⌐ «ßΓá½∞¡δσ Γ¿»«ó.
-
- ä½∩ ñá¡¡δσ, ¿¼ÑεΘ¿σ Γ¿» near, ßπΘÑßΓóπεΓ τÑΓδαÑ ß»Ñ-
- µ¿á½∞¡δσ π¬áºáΓѽ∩: _cs, _ds, _ss ¿ _es. ¥Γ« 16-í¿Γ«óδÑ π¬áºá-
- Γѽ¿, ¬«Γ«αδÑ «ß«íδ¼ «íαẫ¼ ßó∩ºá¡δ ß ß««ΓóÑΓßΓóπεΘ¿¼¿ ßÑú-
- ¼Ñ¡Γ¡δ¼¿ αÑú¿ßΓαἿ. ìá»α¿¼Ñα, Ñß½¿ «íΩ∩ó¿Γ∞
-
- char _ss *p;
-
- Γ« p ß«ñÑαª¿Γ 16-í¿Γ«ó«Ñ ß¼ÑΘÑ¡¿Ñ ó ßΓѬ«ó«¼ ßÑú¼Ñ¡ΓÑ.
-
- öπ¡¬µ¿¿ ¿ π¬áºáΓѽ¿ ó »α«úαá¼¼Ñ íπñπΓ »« π¼«½τá¡¿ε ¿¼ÑΓ∞
- Γ¿» near ¿½¿ far, ó ºáó¿ß¿¼«ßΓ¿ «Γ óδíαá¡¡«⌐ óἿ ¼«ñѽ¿
- »á¼∩Γ¿. àß½¿ Σπ¡¬µ¿∩ ¿½¿ π¬áºáΓѽ∞ ¿¼ÑÑΓ Γ¿» near, Γ« «¡¿ áóΓ«-
- ¼áΓ¿τÑ߬¿ ßó∩ºδóáεΓß∩ ß αÑú¿ßΓα«¼ CS ¿½¿ DS.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - 32 -
-
-
-
-
- 3. êß»«½∞º«óá¡¿Ñ αẽ¿τ¡δσ ∩ºδ¬«ó »α«úαá¼¼¿α«óá¡¿∩
-
-
-
-
-
-
- 3.1. æ¼ÑΦÑ¡¿Ñ ∩ºδ¬«ó »α«úαá¼¼¿α«óá¡¿∩: ¿¡ΓÑαΣÑ⌐ß
-
-
- Turbo-C »«ºó«½∩ÑΓ ¿º »α«úαá¼¼ ¡á C «íαáΘáΓ∞ß∩ ¬
- »α«úαá¼¼á¼, ¡á»¿ßá¡¡δ¼ ¡á ñαπú¿σ ∩ºδ¬áσ, ¿ ¡á«í«α«Γ. é ñá¡¡«¼
- »«ñαáºñÑ½Ñ αáßß¼«ΓαÑ¡ ¿¡ΓÑαΣÑ⌐ß Turbo-C ß ñαπú¿¼¿ ∩ºδ¬á¼¿.
-
-
- 3.1.1. ū߽Ññ«óáΓѽ∞¡«ßΓ¿ »ÑαÑñáτ¿ »áαá¼ÑΓα«ó: C ¿
- Åá߬á½∞
-
-
- Turbo-C »«ññÑনóáÑΓ ñóá ¼ÑΓ«ñá »ÑαÑñáτ¿ »áαá¼ÑΓα«ó ó
- Σπ¡¬µ¿ε: ßΓá¡ñáαΓ¡δ⌐ C-¼ÑΓ«ñ ¿ »á߬á½Ñó߬¿⌐ ¼ÑΓ«ñ.
-
-
- 3.1.1.1. C-»«ß½Ññ«óáΓѽ∞¡«ßΓ∞ »ÑαÑñáτ¿ »áαá¼ÑΓα«ó
- (ß«ú½áΦÑ¡¿Ñ ó맮óá)
-
-
- ÅαÑñ»«½«ª¿¼ óδ «íΩ∩󿽿 ß½ÑñπεΘ¿⌐ »α«Γ«Γ¿» Σπ¡¬µ¿¿:
-
- void funca(int p1, int p2, int p3);
-
- Å« π¼«½τá¡¿ε, Turbo-C ¿ß»«½∞ºπÑΓ C-»«ß½Ññ«óáΓѽ∞¡«ßΓ∞ »Ñ-
- αÑñáτ¿ »áαá¼ÑΓα«ó. Åα¿ «íαáΘÑ¡¿¿ ¬ ñá¡¡«⌐ Σπ¡¬µ¿¿ (funca) »áαá-
- ¼ÑΓαδ »«¼ÑΘáεΓß∩ ó ßΓѬ ó »«α∩ñ¬Ñ ß»αáóá-¡á½Ñó« (p3, p2, p1),
- ß½Ññ«¼ ºá »áαá¼ÑΓαἿ ó ßΓѬ »«¼ÑΘáÑΓß∩ áñαÑß ó«ºóαáΓá. Éáßß-
- ¼«Γα¿¼ Σαáú¼Ñ¡Γ »α«úαá¼¼δ:
-
- main()
- {
- int i, j;
- long k;
- . . .
- i=5; j=7; k=0x1407AA;
- funca(i,j,k)
- . . .
- }
-
- æΓѬ íπñÑΓ óδú½∩ñÑΓ∞ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- SP + 06: 0014
- SP + 04: 07AA k=p3
- SP + 02 0007 j=p2
- SP 0005 i=p1
-
-
- - 33 -
-
-
-
-
- Å_α_¿_¼_Ñ_τ_á_¡_¿_Ñ. æΓѬ αáßΓÑΓ ßóÑασπ 󡿺, »«φΓ«¼π i - ΓѬπ-
- Θ¿⌐ "óÑασ" ßΓѬá.
-
- éδºδóáεΘá∩ »α«úαá¼¼á ¡Ñ óδí¿αáÑΓ »áαá¼ÑΓαδ ¿º ßΓѬá, φΓ«
- íπñÑΓ ñѽáΓ∞ óδºδóáѼá∩ »α«úαá¼¼á.
-
- Éáßß¼«Γα¿¼ Σαáú¼Ñ¡Γ »α«úαá¼¼δ ¡á ∩ºδ¬Ñ áßßѼí½Ñαá, ¬«Γ«αδ⌐
- »«½πτÑ¡ »α¿ ¬«¼»¿½∩µ¿¿ ¿ßσ«ñ¡«⌐ »α«úαá¼¼δ ¡á ∩ºδ¬Ñ C, »α¿óÑñÑ¡-
- ¡«⌐ óδΦÑ.
-
- mov word prt [bp-8],5 ; ôßΓá¡«ó¬á i=5
- mov word prt [bp-6],7 ; j=7
- mov word prt [bp-4],0014h ; k=0x1407AA
- mov word prt [bp-2],07AAh
- push word prt [bp-2] ; Å«¼ÑΘáѼ π¬áºáΓѽ∞
- ; ßΓÑ¬á ¡á ßΓáαΦÑÑ ß½«ó« k
- push word prt [bp-4] ; Å«¼ÑΘáѼ π¬áºáΓѽ∞
- ; ßΓÑ¬á ¡á ¼½áñΦÑÑ ß½«ó« k
- push word prt [bp-6] ; ô¬áºáΓѽ∞ ßΓѬá - ¡á j
- push word prt [bp-8] ; ô¬áºáΓѽ∞ ßΓѬá - ¡á i
- call near prt funca ; é맮ó Σπ¡¬µ¿¿ funca
- add sp,8 ; ôßΓá¡«ó¬á ßΓѬá
-
-
- ū߽Ññ¡∩∩ ¬«¼á¡ñá add sp,8. é ñá¡¡«⌐ Γ«τ¬Ñ ¬«¼»¿½∩Γ«α πº-
- ¡áÑΓ Γ«τ¡« ߬«½∞¬« »áαá¼ÑΓα«ó í佫 »«¼ÑΘÑ¡« ó ßΓѬ; πº¡áÑΓ áñ-
- αÑß ó«ºóαáΓá, ¬«Γ«αδ⌐ íδ½ »«¼ÑΘÑ¡ ó ßΓѬ »«ßαÑñßΓó«¼ «íαáΘÑ¡¿∩
- ¬ funca.
-
-
- 3.1.1.2. Åá߬á½Ñó߬á∩ »«ß½Ññ«óáΓѽ∞¡«ßΓ∞ »ÑαÑñáτ¿
- »áαá¼ÑΓα«ó (ß«ú½áΦÑ¡¿Ñ ó맮óá)
-
-
- äá¡¡δ⌐ ¼ÑΓ«ñ ¡Ñ «º¡áτáÑΓ, τΓ« óδ ¼«ªÑΓÑ óδºδóáΓ∞ Σπ¡¬µ¿¿
- Turbo-Åá߬á½∩ ¿º Turbo-C.
-
- àß½¿ Σπ¡¬µ¿∩ «íΩ∩ó½Ñ¡á ¬á¬
-
- void pascal funca(int p1, int p2, int p3);
-
- »α¿ «íαáΘÑ¡¿¿ ¬ Σπ¡¬µ¿¿ »«ß½Ññ«óáΓѽ∞¡«ßΓ∞ »«¼ÑΘáÑΓ »áαá¼ÑΓαδ ó
- ßΓѬ ß½Ñóá-¡á»αáó«, Γ.Ñ. ó »«α∩ñ¬Ñ (p1, p2, p3). çáΓѼ ó ßΓѬ
- »«¼ÑΘáÑΓß∩ áñαÑß ó«ºóαáΓá.
-
- Éáßß¼«Γα¿¼ Σαáú¼Ñ¡Γ »α«úαá¼¼δ:
-
- main()
- {
- int i, j;
- long k;
- . . .
- i=5; j=7; k=0x1407AA;
- funca(i,j,k)
-
- - 34 -
-
-
-
-
- . . .
- }
-
- æΓѬ íπñÑΓ óδú½∩ñÑΓ∞ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- SP + 06: 0005 i=p1
- SP + 04: 0007 j=p2
- SP + 02 0014
- SP 07AA k=p3
-
-
- Åá߬á½Ñó߬á∩ »«ß½Ññ«óáΓѽ∞¡«ßΓ∞ »ÑαÑñáτ¿ »áαá¼ÑΓα«ó »αÑñ-
- »«½áúáÑΓ, τΓ« óδºóá¡¡«⌐ »α«úαá¼¼Ñ (funca) ¿ºóÑßΓ¡« ߬«½∞¬« »á-
- αá¼ÑΓα«ó »ÑαÑñáÑΓß∩, ¿ ó ß««ΓóÑΓßΓó¿¿ ß φΓ¿¼ ºá»«½¡∩ÑΓß∩ ßΓѬ.
- äαπú¿¼¿ ß½«óἿ, ¡á ∩ºδ¬Ñ áßßѼí½Ñαá «íαáΘÑ¡¿Ñ ¬ Σπ¡¬µ¿¿ funca
- íπñÑΓ óδú½∩ñÑΓ∞ ß½ÑñπεΘ¿¼ «íαẫ¼:
-
- push word prt [bp-8] ; Å«¼ÑΘáѼ i
- push word prt [bp-6] ; Å«¼ÑΘáѼ j
- push word prt [bp-4] ; Å«¼ÑΘáѼ ßΓáαΦÑÑ
- ; ß½«ó« k
- push word prt [bp-2] ; Å«¼ÑΘáѼ
- ; ¼½áñΦÑÑ ß½«ó« k
- call near prt funca ; é맮ó Σπ¡¬µ¿¿ funca
- (»«¼ÑΘáѼ áñαÑß ó«ºóαáΓá)
-
- çá¼ÑΓ¿¼, τΓ« ó ñá¡¡«¼ ß½πτáÑ «ΓßπΓßΓóπÑΓ ¬«¼á¡ñá add sp,8
- »«ß½Ñ ó맮óá. é¼ÑßΓ« φΓ«ú« funca ¿ß»«½∞ºπÑΓ ¬«¼á¡ñπ ret 8, ñ½∩
- Γ«ú« τΓ«íδ «τ¿ßΓ¿Γ∞ ßΓѬ »ÑαÑñ ó«ºóαáΓ«¼ ó main.
-
- Å« π¼«½τá¡¿ε óßÑ Σπ¡¬µ¿¿ Turbo-C ¿ß»«½∞ºπεΓ C-¼ÑΓ«ñ »ÑαÑ-
- ñáτ¿ »áαá¼ÑΓα«ó. àß½¿ óδ ¿ß»«½∞ºπÑΓÑ Σ½áú -p »α¿ ¬«¼»¿½∩µ¿¿, ó
- φΓ«¼ ß½πτáÑ óßÑ Σπ¡¬µ¿¿ ¿ß»«½∞ºπεΓ »á߬á½Ñó߬¿⌐ ¼ÑΓ«ñ. ä½∩
- Γ«ú«, τΓ«íδ ºáñáΓ∞ ¿ß»«½∞º«óá¡¿Ñ C-¼ÑΓ«ñá ñ½∩ ¬á¬«⌐-ñ¿í« Σπ¡¬-
- µ¿¿, ¿ß»«½∞ºπ⌐ΓÑ ¼«ñ¿Σ¿¬áΓ«α cdecl.
-
- ìá»α¿¼Ñα,
-
- void cdecl funca(int p1, int p2, int p3);
-
- Åá߬á½Ñó߬¿⌐ ¼ÑΓ«ñ ¿ß»«½∞ºπÑΓß∩ ó ß½ÑñπεΘ¿σ ß½πτá∩σ:
-
- 1) Åα¿ ¿ß»«½∞º«óá¡¿¿ ó맮ó«ó ßπΘÑßΓóπεΘ¿σ »α«úαá¼¼ ¡á áß-
- ßѼí½ÑαÑ, ¿ß»«½∞ºπεΘ¿σ ñá¡¡«Ñ ß«ú½áΦÑ¡¿Ñ ó맮óá
-
- 2) Åα¿ ¿ß»«½∞º«óá¡¿¿ »α«úαá¼¼, ¡á»¿ßá¡¡δσ ¡á ñαπú¿σ ∩ºδ¬áσ
- »α«úαá¼¼¿α«óá¡¿∩.
-
- 3) the calling code produced is slightly smaller, since it
- doesn't have to clean up the stack afterwards.
-
-
-
-
-
- - 35 -
-
-
-
-
- 3.1.2. ê¡ΓÑαΣÑ⌐ß ß áßßѼí½Ñα«¼
-
-
-
- 3.1.2.1. ÄíαáΘÑ¡¿∩ ¬ Σá⌐½á¼ .ASM ¿º Turbo-C
-
-
- éδ ¼«ªÑΓÑ »¿ßáΓ∞ áßßѼí½Ñα«ó߬¿Ñ »α«úαá¼¼δ ¬á¬ «Γñѽ∞¡δÑ
- ¼«ñπ½¿, ñ½∩ Γ«ú« τΓ«íδ ó »«ß½ÑñßΓó¿¿ ¿σ ßó∩ºδóáΓ∞ ß C-»α«úαá¼-
- ¼á¼¿. Äñ¡á¬«, ßπΘÑßΓóπεΓ «»αÑñѽѡ¡δÑ ß«ú½áΦÑ¡¿∩, ¬«Γ«αδ¼ óδ
- ñ«½ª¡δ ß½Ññ«óáΓ∞, ñ½∩ Γ«ú« τΓ«íδ:
-
- 1) íδΓ∞ πóÑαÑ¡¡δ¼, τΓ« αÑñá¬Γ«α ßó∩ºÑ⌐ »«½πτ¿Γ óßε ¡Ñ«íσ«-
- ñ¿¼πε ¿¡Σ«α¼áµ¿ε;
-
- 2) íδΓ∞ πóÑαÑ¡¡δ¼, τΓ« Σ«α¼áΓ Σá⌐½á ¡áσ«ñ¿Γß∩ ó ß««ΓóÑΓßΓ-
- ó¿¿ ß ¼«ñѽ∞ε »á¼∩Γ¿, ¿ß»«½∞ºπѼ«⌐ óáΦÑ⌐ C-»α«úαá¼¼«⌐.
-
-
- Æáí½¿µá 5
-
- ÄíΘá∩ ßΓαπ¬Γπαá »α«úαá¼¼δ
-
- -------------------------------------------------------
- êñÑ¡Γ¿Σ¿¬áΓ«α ê¼∩ ê¼∩ Σá⌐½á
- -------------------------------------------------------
- <text> SEGMENT BYTE PUBLIC 'CODE'
- ASSUME CS: <text>, DS: <dseg>
- <...........ßÑú¼Ñ¡Γ ¬«ñá..............>
- <text> ENDS
-
- <dseg> GROUP _DATA, _BSS
- <data> SEGMENT WORD PUBLIC 'DATA'
- <..ßÑú¼Ñ¡Γ ¿¡¿µ¿á½¿º¿α«óá¡¡δσ ñá¡¡δσ..>
- <data> ENDS
-
- _BSS SEGMENT WORD PUBLIC 'BSS'
- <.ßÑú¼Ñ¡Γ ¡Ñ¿¡¿µ¿á½¿º¿α«óá¡¡δσ ñá¡¡δσ.>
- _BSS ENDS
-
- _BSS END
-
- êñÑ¡Γ¿Σ¿¬áΓ«αδ <text>, <data>, <dseg> ó ñá¡¡«⌐ ßσÑ¼Ñ ¿¼ÑεΓ
- «ß«íδÑ º¡áτÑ¡¿∩, ºáó¿ß∩Θ¿Ñ «Γ ¿ß»«½∞ºπѼ«⌐ ¼«ñѽ¿ »á¼∩Γ¿. é
- »α¿óÑñÑ¡¡«⌐ ¡¿ªÑ Γáí½¿µÑ π¬áºá¡δ ß««ΓóÑΓßΓóπεΘ¿Ñ º¡áτÑ¡¿∩ ñ½∩
- ¬áªñ«⌐ ¼«ñѽ¿ »á¼∩Γ¿; filename ó ñá¡¡«⌐ Γáí½¿µÑ - φΓ« ¿¼∩ ¼«ñπ-
- ½∩; «¡« ñ«½ª¡« ¿ß»«½∞º«óáΓ∞ß∩ ó ñ¿αÑ¬Γ¿óÑ NAME ¿ ß«ñÑন¼«¼
- ¿ñÑ¡Γ¿Σ¿¬áΓ«αá.
-
- çá¼ÑΓ¿¼, τΓ« ó ¼«ñѽ¿ huge ¡Ñ ¿ß»«½∞ºπÑΓß∩ ßÑú¼Ñ¡Γ _BSS, ¿
- «»αÑñѽѡ¿Ñ GROUP »«½¡«ßΓ∞ »α«»πΘÑ¡«.
-
- ìá¿í«½ÑÑ πñ«í¡« ß«ºñáΓ∞ Φáí½«¡ ¡á áßßѼí½ÑαÑ, «Γ¬«¼»¿½¿α«-
- óáó »α«úαá¼¼π, ¿ß»«½∞ºπ∩ TCC ß «»µ¿Ñ⌐ -s, ¿ »«ß¼«ΓαÑΓ∞ Σá⌐½
-
- - 36 -
-
-
-
-
- .ASM, ó ¬«Γ«α«¼ σαá¡¿Γß∩ ßúÑ¡ÑαÑ¡¡δ⌐ áßßѼí½Ñα¡δ⌐ ¬«ñ.
-
-
- Æáí½¿µá 6
-
- æ«ñÑন¼«Ñ ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó ¿ ¼«ñѽ¿ »á¼∩Γ¿
-
- ---------------------------------------------------------
- î«ñѽ∞ æ«ñÑন¼«Ñ è«ñ ¿ π¬áºáΓѽ¿
- ¿¡ñÑ¡Γ¿Σ¿¬áΓ«αá
- ---------------------------------------------------------
- tiny, small <code>=_TEXT Code: DW _TEXT:xxx
- <data>=_DATA Data: DW DGROUP:xxx
- <dseg>=DGOUP
-
- compact <code>=_TEXT Code: DW _TEXT:xxx
- <data>=_DATA Data: DD DGROUP:xxx
- <dseg>=DGOUP
-
- medium <code>=filename_TEXT Code: DD xxx
- <data>=_DATA Data: DW DGROUP:xxx
- <dseg>=DGOUP
-
- large <code>=filename_TEXT Code: DD xxx
- <data>=_DATA Data: DD DGROUP:xxx
- <dseg>=DGOUP
-
- huge <code>=filename_TEXT Code: DD xxx
- <data>=filename_DATA Data: DD xxx
- <dseg>=filename_DATA
-
-
- 3.1.2.2. Ä»αÑñѽѡ¿Ñ ¬«¡ßΓá¡Γ ¿ »ÑαѼѡ¡δσ
-
-
- î«ñѽ∞ »á¼∩Γ¿ ó½¿∩ÑΓ Γá¬ªÑ ¡á «»αÑñѽѡ¿Ñ ½εíδσ ¬«¡ßΓá¡Γ
- ñá¡¡δσ, Γᬿσ ¬á¬ π¬áºáΓѽ¿ ¡á ¬«ñδ, ñá¡¡δÑ. Åα¿óÑñÑ¡¡á∩ óδΦÑ
- Γáí½¿µá »«¬áºδóáÑΓ ¬á¬ ñ«½ª¡δ óδú½∩ñÑΓ∞ Γá¬¿Ñ π¬áºáΓѽ¿; xxx -
- áñαÑß, ¡á ¬«Γ«αδ⌐ ßßδ½áÑΓß∩ π¬áºáΓѽ∞. çá¼ÑΓ¿¼, τΓ« ¡Ñ¬«Γ«αδÑ
- π¬áºáΓѽ¿ ¿ß»«½∞ºπεΓ DW (Ä»αÑñѽ∩εΓ ß½«ó«), ó Γ« óαѼ∩ ¬á¬ ñαπ-
- ú¿Ñ ¿ß»«½∞ºπεΓ DD (Ä»αÑñѽ∩εΓ ñó«⌐¡«Ñ ß½«ó«), π¬áºáóá∩ αẼÑα
- αѺπ½∞Γ¿απεΘÑú« π¬áºáΓѽ∩. û¿Σα«óδÑ ¿ ΓѬßΓ«óδÑ ¬«¡ßΓá¡Γδ «»αÑ-
- ñѽ∩εΓß∩ ßΓá¡ñáαΓ¡δ¼ «íαẫ¼.
-
- ÅÑαѼѡ¡δÑ «»αÑñѽ∩εΓß∩ Γá¬ªÑ ¬á¬ ¿ ¬«¡ßΓá¡Γδ. àß½¿ óδ σ«-
- Γ¿ΓÑ ºáóÑßΓ¿ »ÑαѼѡ¡δÑ, ¬«Γ«αδÑ ¡Ñ ¿¼ÑεΓ ¡áτá½∞¡«ú« º¡áτÑ¡¿∩,
- óδ ñ«½ª¡δ «íΩ∩ó¿Γ∞ ¿σ ó ßÑú¼Ñ¡ΓÑ _BSS, ºáñáó º¡á¬ (?), ¬«úñá óδ
- ªÑ½áÑΓÑ óóÑßΓ¿ º¡áτÑ¡¿Ñ.
-
-
-
-
-
-
-
- - 37 -
-
-
-
-
- 3.1.2.3. Ä»αÑñѽѡ¿Ñ ú½«íá½∞¡δσ ¿ ó¡ÑΦ¡¿σ
- ¿ñÑ¡Γ¿Σ¿¬áΓ«α«ó.
-
-
- Åα«úαá¼¼á ¡á áßßѼí½ÑαÑ ¼«ªÑΓ óδºδóáΓ∞ Σπ¡¬µ¿¿ ¿ ßßδ½áΓ∞ß∩
- ¡á »ÑαѼѡ¡δÑ Turbo-C. éßÑ ¿ñÑ¡Γ¿Σ¿¬áΓ«αδ ó áßßѼí½Ñα«ó߬«⌐
- »α«úαá¼¼Ñ, ¡á ¬«Γ«αδÑ óδ σ«Γ¿ΓÑ ßßδ½áΓ∞ß∩ ¿º Turbo-C »α«úαá¼¼δ,
- ñ«½ª¡δ ¡áτ¿¡áΓ∞ß∩ ß ß¿¼ó«½á »«ñτÑનóá¡¿∩ (_).
-
- ä½∩ Γ«ú« τΓ«íδ ¿ñÑ¡Γ¿Σ¿¬áΓ«α, ¿¼∩ »«ñ»α«úαá¼¼δ ¿½¿ »ÑαÑ-
- ¼Ñ¡¡á∩ íδ½á ñ«ßΓπ»¡á ¿º-ó¡Ñ óáΦÑú« áßßѼí½Ñα«ó߬«ú« ¼«ñπ½∩, óδ
- ñ«½ª¡δ «íΩ∩ó¿Γ∞ ¿σ ¬á¬ PUBLIC. ìá»α¿¼Ñα, Ñß½¿ óδ ¡á»¿ß὿ ¼«-
- ñπ½∞, ¬«Γ«αδ⌐ ß«ñÑαª¿Γ µÑ½δÑ Σπ¡¬µ¿¿ min ¿ max ¿ µÑ½δÑ »ÑαÑ-
- ¼Ñ¡¡δÑ MAXINT, lastmax ¿ lastmin, óδ ñ«½ª¡δ ó óáΦѼ ¬«ñ«ó«¼
- ßÑú¼Ñ¡ΓÑ ºáñáΓ∞ «»ÑαáΓ«α
-
- PUBLIC _min, _max
-
- ¿ «»ÑαáΓ«αδ
-
- PUBLIC _MAXINT, _lastmax, _lastmin
- _MAXINT DW 32767
- _lastmin DW 0
- _lastmax DW 0
-
-
- 3.1.3. ÄíαáΘÑ¡¿∩ ¬ Turbo-C ¿º Σá⌐½á .ASM
-
-
-
- 3.1.3.1. æßδ½¬á ¡á Σπ¡¬µ¿¿
-
-
- àß½¿ óδ σ«Γ¿ΓÑ óδºóáΓ∞ æ-Σπ¡¬µ¿ε ¿º »α«úαá¼¼δ ¡á áßßѼí½Ñ-
- αÑ, óδ ñ«½ª¡δ ºáñáΓ∞ ó ¼«ñπ½Ñ ß½ÑñπεΘ¿⌐ «»ÑαáΓ«α:
-
- EXTRN <fname> : <fdist>
-
- úñÑ <fname> - ¿¼∩ Σπ¡¬µ¿¿, <fdist> - ½¿í« near, ½¿í« far, ó ºá-
- ó¿ß¿¼«ßΓ¿ «Γ Γ«ú«, ¿¼ÑÑΓ ½¿ æ-Σπ¡¬µ¿∩ Γ¿» near ¿½¿ far. àß½¿
- <fdist> - near, Γ« «»ÑαáΓ«α EXTRN ñ«½ªÑ¡ »«∩ó½∩Γ∞ß∩ ó¡πΓα¿ ¬«-
- ñ«ó«ú« ßÑú¼Ñ¡Γá óáΦÑú« ¼«ñπ½∩; Ñß½¿ ªÑ far, Γ« «»ÑαáΓ«α EXTRN
- ñ«½ªÑ¡ »«∩ó½∩Γ∞ß∩ ó¡Ñ ½εí«ú« ßÑú¼Ñ¡Γá. ìá»α¿¼Ñα, Ñß½¿ óδ ¿¼ÑÑΓÑ
- ß½ÑñπεΘ¿⌐ ¬«ñ«óδ⌐ ßÑú¼Ñ¡Γ:
-
- EXTRN _myfunc1:near, myfunc2:far
-
- φΓ« »«ºó«½¿Γ óá¼ óδºδóáΓ∞ myCfunc1 ¿ myCfunc2 ¿º¡πΓα¿ óáΦ¿σ áß-
- ßѼí½Ñα«ó߬¿σ »α«úαá¼¼.
-
-
-
-
-
-
- - 38 -
-
-
-
-
- 3.1.3.2. æßδ½¬á ¡á ñá¡¡δÑ
-
-
- ä½∩ Γ«ú« τΓ«íδ ߽߫áΓ∞ß∩ ¡á »ÑαѼѡ¡δÑ, óδ ñ«½ª¡δ »«¼Ñß-
- Γ¿Γ∞ «»ÑαáΓ«αδ EXTRN ó¡πΓα¿ óáΦÑú« ßÑú¼Ñ¡Γá ñá¡¡δσ, ¿ß»«½∞ºπ∩
- ß½ÑñπεΘ¿⌐ Σ«α¼áΓ
-
- EXTRN <vname> : <size>
-
- úñÑ <vname> - ¿¼∩ »ÑαѼѡ¡«⌐ ¿ <size> - «ñ¿¡ ¿º ß½ÑñπεΘ¿σ ¿ñÑ¡-
- Γ¿Σ¿¬áΓ«α«ó, π¬áºδóáεΘ¿⌐ αẼÑα »ÑαѼѡ¡«⌐:
-
- 1) BYTE (1 íá⌐Γ)
-
- 2) WORD (2 íá⌐Γá)
-
- 3) DWORD (4 íá⌐Γá)
-
- 4) QWORD (8 íá⌐Γ)
-
- 5) TBYTE (10 íá⌐Γ)
-
-
- 3.1.4. éßΓα«Ñ¡¡δ⌐ áßßѼí½Ñα
-
-
- ä½∩ Γ«ú« τΓ«íδ ¿ß»«½∞º«óáΓ∞ óßΓα«Ñ¡¡δ⌐ áßßѼí½Ñα ó æ-»α«ú-
- αá¼¼Ñ, óδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ «»µ¿ε -B »α¿ ¬«¼»¿½∩µ¿¿. àß½¿ óδ
- ¡Ñ ¿ß»«½∞ºπÑΓÑ ñá¡¡πε «»µ¿ε, á ¬«¼»¿½∩Γ«α óßΓαÑτáÑΓ óßΓα«Ñ¡¡δ⌐
- áßßѼí½Ñα, íπñÑΓ óδñáóáΓ∞ß∩ »αÑñπ»αѪñÑ¡¿Ñ.
-
- éδ ñ«½ª¡δ ¿¼ÑΓ∞ MASM óÑαß¿¿ 3.0 ¿ ßΓáαΦÑ. 諼»¿½∩Γ«α ß¡á-
- τá½á ß«ºñáÑΓ Σá⌐½ ¡á áßßѼí½ÑαÑ, á ºáΓѼ »«ñ¬½ετáÑΓ MASM, ñ½∩
- »«½πτÑ¡¿∩ Σá⌐½á .OBJ.
-
- ìÑ«íσ«ñ¿¼« ¿ß»«½∞º«óáΓ∞ ¬½ετÑó«Ñ ß½«ó« asm ñ½∩ óóÑñÑ¡¿∩
- áßßѼí½Ñα«ó߬¿σ ¬«¼á¡ñ. ö«α¼áΓ
-
- asm <opcode> <operands> <; or newline>
-
- úñÑ
-
- <opcode>
- ñ«»πßΓ¿¼á∩ ¬«¼á¡ñá 8086
-
- <operands>
- «»Ñαáñ¡δ; ¼«ª¡« ßßδ½áΓ∞ß∩ ¡á æ ¬«¡ßΓá¡Γδ, »ÑαѼѡ¡δÑ ¿
- ¼ÑΓ¬¿
-
- <; or newline>
- (;) ¿½¿ ¡«óá∩ ßΓ᫬á - «ñ¿¡ ¿º »α¿º¡á¬«ó ¬«¡µá «»ÑαáΓ«αá
- asm.
-
- (;) ¡Ñ ¼«ªÑΓ íδΓ∞ ¿ß»«½∞º«óá¡á ¬á¬ ¡áτὫ ¬«¼¼Ñ¡Γáα¿∩ ¬á¬
-
- - 39 -
-
-
-
-
- ó MASM. êß»«½∞ºπ⌐ΓÑ æ-¬«¼¼Ñ¡Γáα¿¿. ìá»α¿¼Ñα
-
- asm mov ax, ds; /* ä«»πßΓ¿¼δ⌐ ¬«¼¼Ñ¡Γáα¿⌐ */
- asm pop ax; asm pop ds; asm iret;
- asm push ds;
-
- èáªñδ⌐ asm-«»ÑαáΓ«α ßτ¿ΓáÑΓß∩ ¬á¬ æ-«»ÑαáΓ«α. ìá»α¿¼Ñα,
-
- myfunc()
- {
- int i;
- int x;
- if(i>0)
- asm mov x,4
- else
- i=7;
- }
-
- çá¼ÑΓ¿¼, τΓ« ¡ÑΓ (;) »«ß½Ñ ¬«¼á¡ñδ mov x,4. ¥Γ« ñ«»πßΓ¿¼δ⌐
- if.
-
- ÇßßѼí½Ñα«ó߬¿⌐ «»ÑαáΓ«α ¼«ªÑΓ íδΓ∞ ¿ß»«½∞º«óá¡ ¬á¬ óδ»«½-
- ¡∩Ѽδ⌐ «»ÑαáΓ«α ó¡πΓα¿ Σπ¡¬µ¿¿, Γᬠ¿ ¬á¬ ó¡ÑΦ¡ÑÑ «»¿ßá¡¿Ñ ó¡Ñ
- Σπ¡¬µ¿¿. Ä»ÑαáΓ«αδ, »«¼ÑΘÑ¡¡δÑ ó¡Ñ Σπ¡¬µ¿¿ αẼÑΘáεΓß∩ ó ßÑú-
- ¼Ñ¡ΓÑ DATA, «»ÑαáΓ«αδ, »«¼ÑΘÑ¡¡δÑ ó¡πΓα¿ Σπ¡¬µ¿¿, - ó ßÑú¼Ñ¡ΓÑ
- CODE.
-
- Éáßß¼«Γα¿¼ »α¿¼Ñα óßΓα«Ñ¡¡«⌐ Σπ¡¬µ¿¿ min.
-
- int min (int V1, int V2)
- {
- asm mov ax, V1
- asm cmp ax, V2
- asm jle minexit
- asm mov ax,V2
- minexit:
- return(_AX);
- }
-
- äá¡¡δ⌐ »α¿¼Ñα αáí«ΓáÑΓ ñ½∩ ¼«ñπ½Ñ⌐, ¿ß»«½∞ºπεΘ¿σ large ¿
- small ¼«ñѽ¿ »á¼∩Γ¿, æ ¿ Åá߬á½Ñó߬¿Ñ ß«ú½áΦÑ¡¿∩ ó맮óá.
-
- æπΘÑßΓóπεΓ τÑΓδαÑ ¬½áßßá ¬«¼á¡ñ óßΓα«Ñ¡¡«ú« áßßѼí½Ñαá,
- ñ«»πßΓ¿¼δσ Turbo-C:
-
- 1) ßΓá¡ñáαΓ¡δÑ ¬«¼á¡ñδ
-
- 2) ¬«¼á¡ñδ αáí«Γδ ß« ßΓα«¬á¼¿
-
- 3) ¬«¼á¡ñδ »ÑαÑσ«ñá
-
- 4) áßßѼí½Ñα¡δÑ ñ¿αÑ¬Γ¿óδ - «»αÑñѽѡ¿∩ ¿ ¬«¼á¡ñδ αẼÑΘÑ-
- ¡¿∩ ñá¡¡δσ (db, dd, dw, extrn)
-
-
- - 40 -
-
-
-
-
- 3.1.4.1. æß佬¿ ¡á ñá¡¡δÑ ¿ Σπ¡¬µ¿¿ ¿º óßΓα«Ñ¡¡«ú«
- áßßѼí½Ñαá
-
-
- 鿯ÉÄàìì¢ë ÇææàîüïàÉ ¿ ÉàâêæÆÉÄé¢à ÅàÉàîàìì¢à:
-
- àß½¿ «»¿ßá¡¿∩ register óßΓαÑτáεΓß∩ ó Σπ¡¬µ¿¿, «¡¿ αáßß¼áΓ-
- α¿óáεΓß∩ ¬á¬ «»¿ßá¡¿∩ αÑú¿ßΓα«óδσ »ÑαѼѡ¡δσ, ó« óßÑσ ñαπú¿σ
- ß½πτá∩σ ñá¡¡δÑ «»¿ßá¡¿∩ αáßß¼áΓα¿óáεΓß∩ ¬á¬ «»¿ßá¡¿∩ áóΓ«¼áΓ¿-
- τÑ߬¿σ »ÑαѼѡ¡δσ. é ¡Ññ«»πßΓ¿¼δσ ß½πτá∩σ ¬½ετÑó«Ñ ß½«ó« regis-
- ter ¿ú¡«α¿απÑΓß∩.
-
- Æ«½∞¬« short, int (¿½¿ ß««ΓóÑΓßΓóπεΘ¿Ñ unsigned Γ¿»δ) ¿ 2-
- íá⌐Γ«óδÑ π¬áºáΓѽ¿ ¼«úπΓ íδΓ∞ »«¼ÑΘÑ¡δ ó αÑú¿ßΓαδ. ä½∩ αÑú¿ßΓ-
- α«óδσ »ÑαѼѡ¡δσ ¿ß»«½∞ºπεΓß∩ SI ¿ DI αÑú¿ßΓαδ.
-
- àß½¿ ¿ß»«½∞ºπÑΓß∩ αÑú¿ßΓα«ó«Ñ «»¿ßá¡¿Ñ ó Σπ¡¬µ¿¿,
- óßΓα«Ñ¡¡δ⌐ áßßѼí½Ñα ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ ¿½¿ ¿º¼Ñ¡¿Γ∞ º¡áτÑ¡¿∩
- αÑú¿ßΓα«ó«⌐ »ÑαѼѡ¡«⌐, ¿ß»«½∞ºπ∩ DI ¿½¿ SI; ßá¼«Ñ ½πτΦÑÑ ¿ß»«-
- »«½∞º«óáΓ∞ æ ß¿¼ó«½∞¡δÑ ¿¼Ñ¡á ó ß½πτáÑ ¿º¼Ñ¡Ñ¡¿∩ º¡áτÑ¡¿∩ αÑ-
- ú¿ßΓα«óδσ »ÑαѼѡ¡δσ.
-
-
- 3.1.4.2. êß»«½∞º«óá¡¿Ñ ßΓαπ¬Γπα
-
-
- é« óßΓα«Ñ¡¡«¼ áßßѼí½ÑαÑ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ßß佬¿ ¡á
- ßΓαπ¬Γπαδ. èα«¼Ñ Γ«ú«, ¼«ª¡« ¡Ñ»«ßαÑñßΓóÑ¡¡« ßßδ½áΓ∞ß∩ ¡á τ½Ñ¡
- ßΓαπ¬Γπαδ. Éáßß¼«Γα¿¼ ß½ÑñπεΘπε »α«úαá¼¼π.
-
- struct myStruct {
- int a_a;
- int a_b;
- int a_c;
- } myA;
-
- myfunc()
- {
- ...
- asm mov ax, myA.a_b
- asm mov bx,[di].a_c
- ...
- }
-
- ÅÑαóá∩ ßΓ᫬á asm ºáßδ½áÑΓ ó αÑú¿ßΓα AX º¡áτÑ¡¿Ñ myA.a_b.
- æ½ÑñπεΘá∩ º ºáßδ½áÑΓ º¡áτÑ¡¿Ñ, ¡áσ«ñ∩ΘÑÑß∩ »« áñαÑßπ
- [DI]+ß¼ÑΘÑ¡¿Ñ(a_c) (íÑαÑΓß∩ áñαÑß, ¡áσ«ñ∩Θ¿⌐ß∩ ó αÑú¿ßΓαÑ DI, ¿
- ñ«íáó½∩ÑΓß∩ ¬ ß¼ÑΘÑ¡¿ε a_c «Γ ¡áτá½á ßΓαπ¬Γπαδ) ó αÑú¿ßΓα BX.
-
- ¥Γá »«ß½Ññ«óáΓѽ∞¡«ßΓ∞ «»ÑαáΓ«α«ó »«α«ªñáÑΓ ß½ÑñπεΘ¿⌐ ¬«ñ
-
- mov ax, DGROUP:myA+2
- mov bx,[di+4]
-
-
- - 41 -
-
-
-
-
- 3.1.4.3. êß»«½∞º«óá¡¿Ñ ¬«¼á¡ñ »ÑαÑσ«ñá ¿ ¼ÑΓ«¬
-
-
- ¡« ¿ß»«½∞º«óáΓ∞ ¬«¼á¡ñδ πß½«ó¡«ú« ¿ íѺπß½«ó¡«ú« »ÑαÑ-
- σ«ñá, ¿ µ¿¬½δ ó« óßΓα«Ñ¡¡«¼ áßßѼí½ÑαÑ. Ä¡¿ ñ«»πßΓ¿¼δ Γ«½∞¬«
- ó¡πΓα¿ Σπ¡¬µ¿¿. 諼á¡ñδ »ÑαÑσ«ñá ñ«½ª¡δ ¿ß»«½∞º«óáΓ∞ ¼ÑΓ¬¿ «»Ñ-
- αáΓ«αá æ goto.
-
- ä«»π߬áÑΓß∩ ¬«ßóÑ¡¡δ⌐ »ÑαÑσ«ñ. éδ ¼«ªÑΓÑ ¿ß»«½∞º«óáΓ∞ αÑ-
- ú¿ßΓα«ó«Ñ ¿¼∩ ¬á¬ «»Ñαá¡ñ ó ¬«¼á¡ñÑ »ÑαÑσ«ñá ¿½¿ ºá¬½ετ¿Γ∞ «»Ñ-
- αá¡ñ ó ߬«í¬¿ [], «»αÑñѽ∩∩ JUMP-áñαÑß.
-
- ìá»α¿¼Ñα
-
- int x()
- {
- int a;
- . . .
- a:
- . . .
- asm jmp a /* »ÑαÑσ«ñ ¡á ¼ÑΓ¬π "a" */
- asm jmp [a] /* »ÑαÑσ«ñ »« áñαÑßπ,
- ß«ñÑαªáΘѼπß∩ ó "á" */
- . . .
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-