ํ์ฌ network.h
์๋ ํ๋ซํผ๋ณ ํค๋๊ฐ ๋ง์ด ํฌํจ๋์ด ์์ต๋๋ค(์ u.h
, windows.h
๋ฐ unistd.h
). ์ด๊ฒ์ ํ๋์ ํ์ผ(๋๋ ๋ช ๊ฐ์ ํ์ผ)๋ก ์ ํํด์ผ ํฉ๋๋ค.
๋๋ ์ฐ๋ฆฌ๊ฐ ๋คํธ์ํน์ ์ํ OS ์ค๋น์ ๋ํ ์์ ์ถ์ํ๋ฅผ ๋ง๋ค๊ณ , ๋จ์กฐ๋ก์ด ์๊ณ์ ๋ํ ๋ ๋ค๋ฅธ ์ถ์ํ๋ฅผ ๋ง๋ค ๊ฒ์ ์ ์ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ํ๋ซํผ ์ข
๋ฅ(์: ${module}_win32.c
, _unix.c
, _osx.c
, _posix.c
, ...) #ifdef
๊ฐ ๊ฐ ํ๋ซํผ์ ๋ํด ์ฌ์ ์ํด์ผ ํ๋ ํจ์ ๋ด๋ถ์ ์๊ธฐ ๋๋ฌธ์ ์ ์ธ ์ค๋ฒํค๋๊ฐ ์กฐ๊ธ ๋ ๋ง๋ค๋ ๊ฒ์
๋๋ค. ์ฅ์ ์ ์ฝ๋ ์์ฒด์ #ifdef
๊ฐ ์๊ฑฐ๋ ๊ฑฐ์ ์์ผ๋ฉฐ ํ๋ซํผ ํน์ ์ฝ๋๊ฐ 1100 ๋ผ์ธ ํ์ผ ํผํฉ ํ๋ซํผ ์ถ์ํ ๋์ ์์ ํ์ผ ์ธํธ์ ์๋ค๋ ๊ฒ์
๋๋ค. ์ ํ๋ฆฌ์ผ์ด์
์ฝ๋.
์ข์ ์๋ฆฌ
"Windows ์์คํ "๊ณผ "posix ์์คํ " ๋ฐ "ํ ์คํธ ์์คํ "์ผ๋ก ๊ตฌํํ ์ ์๋ "์์คํ " ์ธํฐํ์ด์ค๋ฅผ ๋ง๋๋ ๊ฒ์ ์ด๋ป์ต๋๊น? ํ ์คํธ ์์คํ ์ ๋จ์ ํ ์คํธ์ ์ฌ์ฉ๋ ์ ์์ผ๋ฉฐ ์ค์ ๋ก ์์คํ ํธ์ถ์ ์ํํ์ง ์๊ณ ์์คํ ์ ์๋ฎฌ๋ ์ด์ ํฉ๋๋ค.
๋๋ ๊ตฌํ ์ ์์ ๋์ํ์ง ์์ต๋๋ค. ๊ฐ ํ๋ซํผ์ ๋ํด ๋ค๋ฅด๊ฒ ์์ฑํด์ผ ํ๋ ํจ์๋ฅผ ๋ํํ๋ ๋ฐ #ifdef
๊ฐ ์ฌ์ฉ๋๋ ๋จ์ผ ํ์ผ {network,time,...}.c
๋ชจ๋ ํจ์๋ฅผ ํจ์ฌ ๋ ๋ณด๊ณ ์ถ์ต๋๋ค.
๊ฐ๋ณ ํ์ผ์ ๋นํด ์ด ๋ฐฉ๋ฒ์ ์ด์ ์ ๋ชจ๋ ํ๋ซํผ ํน์ ์ฝ๋๋ฅผ ์ ์ ํจ์๋ก ๊ฐ์ ์ ์ฉํ๊ณ ๋ ๋์ ์์ค์ toxcore์ ๋ํด ๋จ์ผ API๋ฅผ ๋ ธ์ถํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ๋ชจ๋ ํ๋ซํผ ๊ตฌํ ์ธ๋ถ ์ ๋ณด๋ ๋จ์ผ ํ์ผ์์ ์ฝ๊ฒ ๋ณผ ์ ์์ต๋๋ค. ํ๋ซํผ ํน์ฑ์ ์ถ์ํ์ ์ฌ๋ฌ ํ์ผ์ด ์๋ ๋จ์ผ ํ์ผ ๋ด์์ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. ๋ํ cmakelists.txt ํ์ผ์ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค ๊ฒ์ ๋๋ค(์ด๋ฏธ ์ฐ๋ฆฌ์๊ฒ์ ๋ฉ์ด์ง๊ธฐ ์์ํ์ต๋๋ค.). ๊ทธ๋ฆฌ๊ณ ํ์ฌ ๊ฒํ ์์คํ ์ผ๋ก ๋์ค์ ๊ฒํ ํฉ๋๋ค.
์์ ํ ๊ณ ์ ๋์ง ์์
@GrayHatter๊ฐ ๋์ํ์ต๋๋ค. OS ์ฌ์์ ๊ตฌํํ๋ ๋จ์ผ ํ์ผ์ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
์ง๊ธ์ @Diadlo ๋ฅผ ํ ๋น ํด์ ํฉ๋๋ค. ๋๋ ์ด๊ฒ์ด ๋ง์ ์ฝ๋๋ฒ ์ด์ค์ ๋คํธ์ํฌ ์ฝ๋์ ๋ ธ์ถ๋๊ธฐ ๋๋ฌธ์ ์๋ก์ด ๊ธฐ์ฌ์๋ค์ด ์์ ํ ์ ์๋ ํ๋ฅญํ ๋ฒ๊ทธ๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ธฐ๋ฅ์ ์ํฅ์ ๋ฏธ์น์ง ์๋ ๋ค์ ํฅ๋ฏธ๋ก์ด ๋ฆฌํฉํ ๋ง์ด๋ฏ๋ก ํ ์คํธํ๊ธฐ๊ฐ ๋ ์ฝ์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
"Windows ์์คํ "๊ณผ "posix ์์คํ " ๋ฐ "ํ ์คํธ ์์คํ "์ผ๋ก ๊ตฌํํ ์ ์๋ "์์คํ " ์ธํฐํ์ด์ค๋ฅผ ๋ง๋๋ ๊ฒ์ ์ด๋ป์ต๋๊น? ํ ์คํธ ์์คํ ์ ๋จ์ ํ ์คํธ์ ์ฌ์ฉ๋ ์ ์์ผ๋ฉฐ ์ค์ ๋ก ์์คํ ํธ์ถ์ ์ํํ์ง ์๊ณ ์์คํ ์ ์๋ฎฌ๋ ์ด์ ํฉ๋๋ค.