C Programming, A Modern Approach - K.N.KING ์ Exercises์ Programming Projects๋ฅผ ํผ ๋ด์ฉ์ ๋๋ค.
(a)
1) ํ๋ก๊ทธ๋จ์ ๊ตฌ์กฐ๊ฐ ๋ช
ํํด์ง๋ค.
2) ๊ฐ ์์ค ํ์ผ๋ค์ ๋ฐ๋ก ์ปดํ์ผ ์ํฌ ์ ์์ด ํ๋ก๊ทธ๋จ์ ๊ท๋ชจ๊ฐ ํฌ๊ฑฐ๋ ์์ฃผ ์์ ๋๋ ๊ฒฝ์ฐ ์๊ฐ์ด ์ ์ฝ๋๋ค.
3) mainํจ์์ ๋ค๋ฅธ ํจ์๋ค์ ๋ถ๋ฆฌํจ์ผ๋ก์จ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์์ ํจ์ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
(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๋ก ๊ฐ๋๋ฐ, ์ฌ๊ธฐ์ ์๋ฌด ํ๋๋ ํ์ง ์์ผ๋ฏ๋ก ์๋ฌด๊ฒ๋ ์ถ๋ ฅํ์ง ์๊ณ ๋๋๋ค.
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