๐Ÿ“—15์žฅ Writing Large Programs | Exercises and Programming Projects

ํŒŒ์ธยท2022๋…„ 1์›” 27์ผ
0

C

๋ชฉ๋ก ๋ณด๊ธฐ
6/9
post-thumbnail
post-custom-banner

C Programming, A Modern Approach - K.N.KING ์˜ Exercises์™€ Programming Projects๋ฅผ ํ‘ผ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

๐Ÿ“ Exercises


  1. (a)
    1) ํ”„๋กœ๊ทธ๋žจ์˜ ๊ตฌ์กฐ๊ฐ€ ๋ช…ํ™•ํ•ด์ง„๋‹ค.
    2) ๊ฐ ์†Œ์Šค ํŒŒ์ผ๋“ค์„ ๋”ฐ๋กœ ์ปดํŒŒ์ผ ์‹œํ‚ฌ ์ˆ˜ ์žˆ์–ด ํ”„๋กœ๊ทธ๋žจ์˜ ๊ทœ๋ชจ๊ฐ€ ํฌ๊ฑฐ๋‚˜ ์ž์ฃผ ์ˆ˜์ •๋˜๋Š” ๊ฒฝ์šฐ ์‹œ๊ฐ„์ด ์ ˆ์•ฝ๋œ๋‹ค.
    3) mainํ•จ์ˆ˜์™€ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋“ค์„ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์—์„œ ํ•จ์ˆ˜ ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

    (b)
    1) ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค. (ํ˜•์ •์˜๋ฅผ ์„œ๋กœ ๋‹ค๋ฅด๊ฒŒ ํ•˜๋Š” ๋“ฑ)


  1. (b) ๊ฐ™์€ ํ•จ์ˆ˜๊ฐ€ ์—ฌ๋Ÿฌ๋ฒˆ ์ปดํŒŒ์ผ ๋œ๋‹ค.

  1. ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ๋งŒ๋“  ํŒŒ์ผ์˜ ์ด๋ฆ„์ด ํ•ด๋‹น ๊ฒฝ๋กœ์— ์žˆ๋Š” ํ—ค๋”์˜ ์ด๋ฆ„๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์•„ ์ฐพ์„ ์ˆ˜๊ฐ€ ์—†๋‹ค.

Output if DEBUG is defined:
Value of i : 1
Value of j : 2
Value of k : 3
Value of i + j : 3
Value of 2 * i + j - k : 1

(b)

Output if DEBUG is not defined:

(c)

i. #define DEBUG๋ฅผ ํ•œ ๊ฒฝ์šฐ
testdebug.c์—์„œ DEBUG๋ฅผ ์ •์˜ํ•ด์ค€ ๊ฒฝ์šฐ debug.h์—์„œ PRINT_DEBUG(n)๋Š” printf("Value of " #n " : %d\n", n)๋กœ ๋Œ€์ฒด๋˜์–ด ๊ฐ’์„ ์ถœ๋ ฅํ•ด์ค€๋‹ค.
testdebug.c์—์„œ๋Š” #ifdef ๋ฌธ์„ ๋งŒ์กฑํ•˜์—ฌ Output if DEBUG is defined: ๊ฐ€ ์ถœ๋ ฅํ•œ๋‹ค.
๊ทธ ํ›„ PRINT_DEBUG๋กœ ๊ฐ€๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ ํ—ค๋”ํŒŒ์ผ์— ์˜ํ•ด ๊ฐ’๋“ค์„ ์ถœ๋ ฅํ•ด์ค€๋‹ค.

ii. #define DEBUG๋ฅผ ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ
testdebug.c์—์„œ DEBUG๋ฅผ ์ •์˜ํ•ด์ฃผ์ง€ ์•Š์€ ๊ฒฝ์šฐ debug.h ์—์„œ PRINT_DEBUG(n)๊ฐ€ ์ •์˜๋˜์ง€ ์•Š๋Š”๋‹ค.
testdebug.c์—์„œ๋Š” #else ๋ฌธ์œผ๋กœ ๊ฐ€๊ฒŒ ๋˜์–ด Output if DEBUG is not defined: ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.
๊ทธ ํ›„ PRINT_DEBUG๋กœ ๊ฐ€๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ ์•„๋ฌด ํ–‰๋™๋„ ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์•„๋ฌด๊ฒƒ๋„ ์ถœ๋ ฅํ•˜์ง€ ์•Š๊ณ  ๋๋‚œ๋‹ค.


5.
demo: main.o f1.o f2.o
    gcc -o demo main.o f1.o f2.o

main.o: main.c f1.h
    gcc -c main.c

f1.o: f1.h f2.h
    gcc -c f1.c

f2.o: f1.h f2.h
    gcc -c f2.c

  1. (a) main.c, f1.c, f2.c
    (b) f1.c
    (c) main.c, f1.c, f2.c
    (d) f1.c, f2.c
profile
๊ณต๋ถ€์ •๋ฆฌ์šฉ
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€