diff --git "a/_posts/algorithm/\353\223\261\354\202\260\354\275\224\354\212\244-\354\240\225\355\225\230\352\270\260/2023-12-10-\354\235\264\352\260\200\354\235\200-\353\223\261\354\202\260\354\275\224\354\212\244-\354\240\225\355\225\230\352\270\260.md" "b/_posts/algorithm/\353\223\261\354\202\260\354\275\224\354\212\244-\354\240\225\355\225\230\352\270\260/2023-12-10-\354\235\264\352\260\200\354\235\200-\353\223\261\354\202\260\354\275\224\354\212\244-\354\240\225\355\225\230\352\270\260.md" new file mode 100644 index 0000000..5d7c641 --- /dev/null +++ "b/_posts/algorithm/\353\223\261\354\202\260\354\275\224\354\212\244-\354\240\225\355\225\230\352\270\260/2023-12-10-\354\235\264\352\260\200\354\235\200-\353\223\261\354\202\260\354\275\224\354\212\244-\354\240\225\355\225\230\352\270\260.md" @@ -0,0 +1,26 @@ +--- +title: ๐Ÿข ๋“ฑ์‚ฐ์ฝ”์Šค ์ •ํ•˜๊ธฐ +author: gani0325 +date: 2023-12-10 20:00:00 +09:00 +categories: [์•Œ๊ณ ๋ฆฌ์ฆ˜, ๋“ฑ์‚ฐ์ฝ”์Šค ์ •ํ•˜๊ธฐ] +tags: [์•Œ๊ณ ๋ฆฌ์ฆ˜, ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค, level3, ๊ทธ๋ž˜ํ”„, 8์ฃผ์ฐจ, ์ด๊ฐ€์€] +render_with_liquid: false +--- + +## 1. ๋ฌธ์ œ ๋งํฌ + +[๋“ฑ์‚ฐ์ฝ”์Šค ์ •ํ•˜๊ธฐ](https://school.programmers.co.kr/learn/courses/30/lessons/118669) + +
+ +## 2. ์ฝ”๋“œ + +```python + +``` + +- ์ •ํ™•์„ฑ + +
+ +## 3. ํ•ด์„ค diff --git "a/_posts/processinalC/chap12.-\354\265\234\354\213\240-C/2023-12-31-\354\235\264\352\260\200\354\235\200-chap12.-\354\265\234\354\213\240-C.md" "b/_posts/processinalC/chap12.-\354\265\234\354\213\240-C/2023-12-31-\354\235\264\352\260\200\354\235\200-chap12.-\354\265\234\354\213\240-C.md" new file mode 100644 index 0000000..0503493 --- /dev/null +++ "b/_posts/processinalC/chap12.-\354\265\234\354\213\240-C/2023-12-31-\354\235\264\352\260\200\354\235\200-chap12.-\354\265\234\354\213\240-C.md" @@ -0,0 +1,350 @@ +--- +title: "๐Ÿข chap12. ์ตœ์‹  C" +author: gani0325 +date: 2023-12-31 20:00:00 +09:00 +categories: [์ „๋ฌธ๊ฐ€๋ฅผ ์œ„ํ•œ C, "chap12. ์ตœ์‹  C"] +tags: [์ „๋ฌธ๊ฐ€๋ฅผ ์œ„ํ•œ C, C์–ธ์–ด, 11์ฃผ์ฐจ, ์ด๊ฐ€์€] +render_with_liquid: false +math: true +--- + +

โญ 12.1 C11

+ +- C ์–ธ์–ด๋Š” ISO ํ‘œ์ค€์œผ๋กœ ํ‘œ์ค€ํ™” ๋˜์—ˆ์Œ + - C ๋ฅผ ๊ฐœ์„ ํ•˜๊ณ  ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๋„์ž…ํ•จ +- C99 < C11 (์ด์ „์˜ C99 ํ‘œ์ค€ ๊ฐœ์„ ) < C18 (C11 ๋Œ€์ฒด) + - C18์€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ œ๊ณต X, C11 ์—์„œ ๋ฐœ๊ฒฌ๋œ ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ–ˆ์„ ๋ฟ! + + + +- ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๋„์ž…ํ•˜๋ ค๋ฉด ์ด์ „ ์ฝ”๋“œ๋‚˜ ๊ธฐ๋Šฅ์„ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๋ฉด์„œ ์ˆ˜ํ–‰ + - **๊ธฐ์กด ํ”„๋กœ๊ทธ๋žจ์— ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋ฉด ์•ˆ๋˜๊ณ , ๋ฒ„๊ทธ๊ฐ€ ์—†์–ด์•ผ ํ•จ** + - C11 ๋งŒ๋“ค๊ธฐ ์ „ C ์ปค๋ฎค๋‹ˆํ‹ฐ ์‚ฌ๋žŒ๋“ค์˜ [์—ผ๋ คํ•œ ๊ฑฑ์ •๊ณผ ์ƒ๊ฐ ์ž๋ฃŒ](https://www.open-std.org/JTC1/SC22/wg14/www/docs/n1250.pdf) + - But, C11 ์ถœ์‹œ๋˜์—ˆ์„ ๋•Œ ์ด์ƒ์ ์ธ ํ˜•ํƒœ๊ฐ€ ์•„๋‹ˆ์—ˆ์œผ๋ฉฐ ์‹ค์ œ๋กœ ์‹ฌ๊ฐํ•œ ๊ฒฐํ•จ ์žˆ์—ˆ์Œ + - C18 ์€ C11 ์—์„œ ๋ฐœ๊ฒฌ๋œ ๊ฒฐํ•จ์„ ๊ณ ์น˜๊ณ ์ž ํ•จ (๋น„๊ณต์‹์ ์œผ๋กœ C17) + - ์•”ํŠผ, ํ‘œ์ค€ ์ •๋ฆฌํ•˜๋Š” ๊ณผ์ •์ด ๊ต‰์žฅํžˆ ์–ด๋ ต๊ณ  ๊นŒ๋‹ค๋กœ์›€ ๐Ÿ˜ซ + +

โญ 12.2 C ํ‘œ์ค€ ์ง€์› ๋ฒ„์ „ ์ฐพ๊ธฐ

+ +- C11 ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•œ ์ปดํŒŒ์ผ๋Ÿฌ : gcc, clang ๊ฐ™์€ ์˜คํ”ˆ ์†Œ์Šค ์ปดํŒŒ์ผ +- So, ํŠน์ • ๋งคํฌ๋กœ๋ฅผ ์‚ฌ์šฉํ•ด C ๋ฒ„์ „์„ ๊ฐ์ง€ํ•˜๊ณ , ๋ฒ„์ „์— ๋”ฐ๋ผ์„œ ์ง€์›๋˜๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฒ• ์•Œ์•„๋ณด์ž โ— + + 1. ๋จผ์ € ํ˜„์žฌ ์–ด๋–ค ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ + + 1. ๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” gcc, macOS ์—์„œ๋Š” clang ์‚ฌ์šฉ + 2. ํ˜„์žฌ C ํ‘œ์ค€ ๋ฒ„์ „์„ ๊ฐ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ์กด์— ์ •์˜๋œ ๋งคํฌ๋กœ๋ฅผ ๋Ÿฐํƒ€์ž„ ์‹œ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€ + + - C ํ‘œ์ค€ ๋ฒ„์ „์„ **๊ฐ์ง€**ํ•˜๊ธฐ & **์ปดํŒŒ์ผ** ํ•˜๊ธฐ + + - C ํ‘œ์ค€์˜ ์—ฌ๋Ÿฌ ๋ฒ„์ „ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ์Œ + + ```c + #include + + int main(int argc, char** argv) { + // ์ œ์ผ ์ตœ์‹  + #if __STDC_VERSION__ >= 201710L + printf("Hello World from C18!\n"); + #elif __STDC_VERSION__ >= 201112L + printf("Hello World from C11!\n"); + #elif __STDC_VERSION__ >= 199901L + printf("Hello World from C99!\n"); + + // ์ œ์ผ ์˜›๋‚  + #else + printf("Hello World from C89/C90!\n"); + #endif + return 0; + } + ``` + + - ๋‹ค์–‘ํ•œ ๋ฒ„์ „์˜ C ํ‘œ์ค€์œผ๋กœ ์ปดํŒŒ์ผํ•˜๊ธฐ + + - ์ปดํŒŒ์ผ๋Ÿฌ๋กœ **-std=CXX** ์˜ต์…˜์„ ์ „๋‹ฌํ•ด์•ผ ํ•จ + - ์ตœ์‹  ์ปดํŒŒ์ผ๋Ÿฌ์˜ ๊ธฐ๋ณธ C ํ‘œ์ค€ ๋ฒ„์ „์€ C11 ์ž„ + + ```bash + $ gcc ExtremeC_examples_chapter12_1.c -o ex12_1.out + $ ./ex12_1.out + Hello World from C11! + + $ gcc ExtremeC_examples_chapter12_1.c -o ex12_1.out -std=c11 + $ ./ex12_1.out + Hello World from C11! + + $ gcc ExtremeC_examples_chapter12_1.c -o ex12_1.out -std=c99 + $ ./ex12_1.out + Hello World from C99! + + $ gcc ExtremeC_examples_chapter12_1.c -o ex12_1.out -std=c90 + $ ./ex12_1.out + Hello World from C89/C90! + + $ gcc ExtremeC_examples_chapter12_1.c -o ex12_1.out -std=c89 + $ ./ex12_1.out + Hello World from C89/C90! + ``` + +

โญ 12.3 gets ํ•จ์ˆ˜์˜ ์ œ๊ฑฐ

+ +- ์œ ๋ช…ํ•œ gets ํ•จ์ˆ˜๊ฐ€ ์ œ๊ฑฐ๋จ + - C11 ํ‘œ์ค€์—์„œ gets ์“ฐ๋ฉด C11 ์ปดํŒŒ์ผ๋Ÿฌ๋กœ ์ปดํŒŒ์ผ ๋˜์ง€ ์•Š์Œ + - **gets ํ•จ์ˆ˜** + - ํ‚ค๋ณด๋“œ๋กœ๋ถ€ํ„ฐ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›์•„ ๋ฒ„ํผ์— ์ €์žฅํ•˜๋Š” ํ•จ์ˆ˜ + - ์ด ํ•จ์ˆ˜๋Š” **ํ•˜๋‚˜์˜ ์ธ์ž**๋ฅผ ์š”๊ตฌํ•˜๋Š”๋ฐ, ๊ทธ๊ฒƒ์€ **์ž…๋ ฅ๋ฐ›์€ ๊ฐ’์„ ์ €์žฅํ•  ๋ฒ„ํผ** + - โ“ **๋ฒ„ํผ**๋ž€ + - buffer ๋ฐฐ์—ด ๋ณ€์ˆ˜์˜ ์‹œ์ž‘ ์ฃผ์†Œ + - C์–ธ์–ด์—์„œ โ€œ๋ฐฐ์—ด์˜ ์ด๋ฆ„์€ ๊ทธ ๋ฐฐ์—ด์˜ ์‹œ์ž‘ ์ฃผ์†Œ์™€ ๋™์ผํ•˜๋‹คโ€ + - gets() ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ์ „๋‹ฌ๋˜๋Š” ๊ฒƒ์€ **โ€œ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œโ€ ๊ฐ’** (buffer ๋ณ€์ˆ˜์˜ ์‹œ์ž‘ ์ฃผ์†Œ) + - ์—”ํ„ฐ๊ฐ€ ์ž…๋ ฅ ๋  ๋•Œ๊นŒ์ง€ ์ž…๋ ฅ์„ ๋ฐ›์Œ + - ์‚ฌ์šฉ์ž๊ฐ€ ์—”ํ„ฐ๋ฅผ ์น˜๊ธฐ ์ „๊นŒ์ง€ ์ž…๋ ฅํ•œ ๊ฐ’๋“ค์„ ์ธ์ž๋กœ ์ฃผ์–ด์ง„ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ์ €์žฅํ•œ๋‹คโ— + - So,, ์—”ํ„ฐ ์ž…๋ ฅ ์ „๊นŒ์ง€ ๋งŽ์€ ๊ฐ’ ์ž…๋ ฅ.. โ‡’ ์‚ฌ์šฉ์ž์˜ ๊ณผ๋„ํ•œ ์ž…๋ ฅ์ด ๊ฒฐ๊ตญ ๐Ÿšจ **๋ฒ„ํผ ์˜ค๋ฒ„ ํ”Œ๋กœ์šฐ**๋ฅผ ๋ฐœ์ƒ + - **๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ** ๊ณต๊ฒฉ์˜ ๋Œ€์ƒ์ด ๋œ๋‹ค + - ๊ฒฝ๊ณ„ ๊ฒ€์‚ฌ๊ฐ€ ์—†๊ณ  ํ˜ธ์ถœ ํ”„๋กœ๊ทธ๋žจ์ด ๋‹ค์Œ์— ์˜ฌ ํ–‰์˜ ๊ธธ์ด๋ฅผ ํ™•์‹คํ•˜๊ฒŒ ๊ฒฐ์ •ํ•˜์ง€ ๋ชปํ•˜๋Š” ๋งŒํผ, ์ด ํ•จ์ˆ˜๋Š” ์•…์„ฑ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ ๊ณต๊ฒฉ์„ ํ†ตํ•ด ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๋Šฅ์„ ์ž„์˜๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Œ + - ๋ฐ˜๋ฉด์— **fgets** ํ•จ์ˆ˜๋Š” ๊ฒฝ๊ณ„ ๊ฒ€์‚ฌ ๋จ + - **fgets ํ•จ์ˆ˜** + - **FILE ๊ตฌ์กฐ์ฒด**๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ **ํŒŒ์ผ ์ž…์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ**์—์„œ **๋ฌธ์ž์—ด**์„ ๊ฐ€์ ธ์˜ค๋Š” ํ•จ์ˆ˜ + ```arduino + char*fgets(char* str,int numChars, FILE* stream); + char*fgets(char* str,int numChars, stdin); // ํ‚ค๋ณด๋“œ๋กœ๋„ ์ž…๋ ฅ ๊ฐ€๋Šฅ + ``` + 1. ์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜(str) : ํŒŒ์ผ์—์„œ ์ฝ์€ ๋ฌธ์ž์—ด์„ ์ €์žฅํ•  **๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ**๋ฅผ ๋„˜๊ฒจ์ฃผ๊ธฐ + 2. ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜(numChars) : ์ €์žฅํ•  ๋ฌธ์ž์˜ **์ตœ๋Œ€ ๊ฐœ์ˆ˜**๋ฅผ ์ง€์ • + 3. ์„ธ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜(stream) : ํŒŒ์ผ์—์„œ ๋ฌธ์ž์—ด์„ ์ฝ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•  **ํŒŒ์ผ ํฌ์ธํ„ฐ** + - FILE ๊ตฌ์กฐ์ฒด ์‚ฌ์šฉํ•˜๋ฉฐ, ํ…์ŠคํŠธ ํŒŒ์ผ ๊ด€๋ฆฌํ•˜๋Š” ํฌ์ธํ„ฐ + 4. ๊ฒฐ๊ณผ๋ฅผย string์— ์ €์žฅํ•˜๊ณ  ์ŠคํŠธ๋ง ๋์— ๋„(null) ๋ฌธ์ž(\0)๋ฅผ ์ถ”๊ฐ€ + +

โญ 12.4 fopen ํ•จ์ˆ˜๋กœ์˜ ๋ณ€ํ™”

+ +- **fopen ํ•จ์ˆ˜** + + - ํŒŒ์ผ์„ ์—ด์–ด์„œ ํŒŒ์ผ ์„œ์ˆ ์ž(descriptor) ๋ฅผ ๊ทธ ํŒŒ์ผ๋กœ ๋ฐ˜ํ™˜ํ•  ๋•Œ ์‚ฌ์šฉ + - ํŒŒ์ผ ! ๊ผญ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์–ด๋–ค ํŒŒ์ผ์ด ์•„๋‹˜,, ๊ต‰์žฅํžˆ ๋ณดํŽธ์ ์ด๋‹ค + - fopen ํ•จ์ˆ˜ ํŒจ๋ฐ€๋ฆฌ์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์‹œ๊ทธ๋‹ˆ์ฒ˜ + + ```c + FILE* fopen(const char *pathname, const char *mode); + FILE* fdopen(int fd, const char *mode); + FILE* freopen(const char *pathname, const char *mode, FILE + *stream); + ``` + + - ๋ชจ๋“  ์‹œ๊ทธ๋‹ˆ์ฒ˜๋Š” mode ์ž…๋ ฅ์„ ๋ฐ›์Œ + + - **mode** : ํŒŒ์ผ์„ ์—ฌ๋Š” ๋ฐฉ๋ฒ•์„ ์ •ํ•˜๋Š” ๋ฌธ์ž์—ด + + - FreeBSD ๋งค๋‰ด์–ผ์˜ fopen ํ•จ์ˆ˜ + + - **๋ชจ๋“œ x** ๋Š” C11 ์—์„œ ๋„์ž…๋จ + + - ํŒŒ์ผ์„ ์“ฐ๊ธฐ ์œ„ํ•ด ์—ด๋ ค๋ฉด fopen ์— ๋ชจ๋“œ w ๋˜๋Š” w+ ๋„ฃ๊ธฐ + - ์ด๋ฏธ ํŒŒ์ผ์ด ์กด์žฌํ•œ๋‹ค๋ฉด,, w ๋˜๋Š” w+ ๋ชจ๋“œ๋Š” ํŒŒ์ผ์„ ์‚ญ์ œํ•จ (๋น„์›€) + - So, ํŒŒ์ผ ์ถ”๊ฐ€ํ•˜๋ฉด์„œ ํ˜„์žฌ ๋‚ด์šฉ ์œ ์ง€ํ•˜๋ ค๋ฉด a ๋ชจ๋“œ ์‚ฌ์šฉํ•˜๊ธฐ + + ```bash + $ man 3 fopen + ... + mode ์ธ์ˆ˜๋Š” ๋‹ค์Œ ๋ฌธ์ž ์ค‘ ํ•˜๋‚˜๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฌธ์ž์—ด์„ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค. + + "r" ์ฝ๊ธฐ ๋ชจ๋“œ๋กœ ํŒŒ์ผ์„ ์—ฝ๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆผ์€ ํŒŒ์ผ์˜ ๊ฐ€์žฅ ์•ž์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค. + ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. + "w" ์“ฐ๊ธฐ ๋ชจ๋“œ๋กœ ํŒŒ์ผ์„ ์—ฝ๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆผ์€ ํŒŒ์ผ์˜ ๊ฐ€์žฅ ์•ž์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค. + ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. + "a" ์“ฐ๊ธฐ ๋ชจ๋“œ๋กœ ํŒŒ์ผ์„ ์—ฝ๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆผ์€ ํŒŒ์ผ์˜ ๊ฐ€์žฅ ๋์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค. + fseek(3) ์ด๋‚˜ ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ๊ณผ ์ƒ๊ด€์—†์ด, + ํ•ญ์ƒ ํŒŒ์ผ์˜ ํ˜„์žฌ ๋๋ถ€๋ถ„์—์„œ ํŒŒ์ผ ์ด์–ด ์“ฐ๊ธฐ๊ฐ€ ๋๋‚ฉ๋‹ˆ๋‹ค. + ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. + + "r", "w", "a" ๋’ค์— "+"์„ ์˜ต์…˜์œผ๋กœ ์ถ”๊ฐ€ํ•˜๋ฉด **์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ ๋ชจ๋“œ**๋กœ ํŒŒ์ผ์„ ์—ฝ๋‹ˆ๋‹ค. + ํŒŒ์ผ์ด ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ "w" ๋‹ค์Œ "x"๋ฅผ ์˜ต์…˜์œผ๋กœ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜, + "w+"์„ ์‚ฌ์šฉํ•˜๋ฉด fopen()์ด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. + + ์œ„์— ์ถ”๊ฐ€๋กœ "" ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋ฉด fopen()์„ ํ˜ธ์ถœํ•ด + ๊ธฐ๋ณธ ํŒŒ์ผ ์„œ์ˆ ์ž์— FD_CLOEXEC ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. + + ๋ชจ๋“œ ๋ฌธ์ž์—ด์€ "+"์ด๋‚˜ ์ฒซ ๋ฒˆ์งธ ๊ธ€์ž ๋‹ค์Œ์— "b"๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค + ``` + + - ํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•  ๋•Œ, ํŒŒ์ผ ์‹œ์Šคํ…œ API ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ํŒŒ์ผ ์—ด๊ธฐ ์œ„ํ•œ ์ƒ์šฉ๊ตฌ ๋” ์ ๊ฒŒ ์“ธ ์ˆ˜ ์žˆ์Œ + - ๊ทธ๋ฐ–์—๋„, fopen_s API์˜ ๋„์ž…์ด ์žˆ์Œ (์•ˆ์ „ํ•œ fopen ์—ญํ•  ๋ฒ„์ „ โ†’ ๋ฒ„ํผ์˜ ๊ฒฐํ•จ ๊ฐ์ง€ํ•˜๊ธฐ ์œ„ํ•ด, ์ œ๊ณต๋œ ๋ฒ„ํผ์™€ ๊ทธ ๊ฒฝ๊ณ„์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๊ฒ€์‚ฌ ์ˆ˜ํ–‰) + +

โญ 12.5 ๊ฒฝ๊ณ„ ๊ฒ€์‚ฌ ํ•จ์ˆ˜

+ +- ๋ฌธ์ž์—ด๊ณผ ๋ฐ”์ดํŠธ ๋ฐฐ์—ด์—์„œ ์ž‘๋™ํ•˜๋Š” C ํ”„๋กœ๊ทธ๋žจ์˜ ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๋Š”.. + - ๐Ÿšจ ๋ฒ„ํผ๋‚˜ ๋ฐ”์ดํŠธ ๋ฐฐ์—ด์˜ ๊ฒฝ๊ณ„๋กœ ์‰ฝ๊ฒŒ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ์Œ + - **๋ฒ„ํผ** : ๋ฐ”์ดํŠธ ๋ฐฐ์—ด์ด๋‚˜ ๋ฌธ์ž์—ด ๋ณ€์ˆ˜์˜ ์ž๋ฆฌ ํ‘œ์‹œ์ž๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ + - ๋ฒ„ํผ์˜ ๊ฒฝ๊ณ„๋ฅผ ๋„˜์–ด๊ฐ€๋ฉด โ†’ **๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ** ๋ฐœ์ƒ + - ์ด๋ฅผ ํ†ตํ•ด ์•…์„ฑ ๊ฐœ์ฒด๊ฐ€ ๊ณต๊ฒฉ โ†’ **๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ ๊ณต๊ฒฉ** + - ์ด๋Ÿฐ ์œ ํ˜•์˜ ๊ณต๊ฒฉ โ†’ ์„œ๋น„์Šค ๊ฑฐ๋ถ€ (DOS) ๋ฐœ์ƒ, ์•…์šฉ + - strcpy, strcat ๊ฐ™์€ string.h ์— ์žˆ๋Š” ๋ฌธ์ž์—ด ์กฐ์ž‘ ํ•จ์ˆ˜๋Š” ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ ๊ณต๊ฒฉ ๋ฐฉ์ง€์˜ ๊ฒฝ๊ณ„ ๊ฒ€์‚ฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ๋ถ€์กฑํ•จ +- But, C11 ์—์„œ ์ƒˆ๋กœ์šด ํ•จ์ˆ˜๊ฐ€ ๋„์ž…๋จ + - **๊ฒฝ๊ณ„ ๊ฒ€์‚ฌ ํ•จ์ˆ˜** : ๋ฌธ์ž์—ด ์กฐ์ž‘ ํ•จ์ˆ˜์—์„œ ์ด๋ฆ„ ๋นŒ๋ ค์˜ด, ๋์— **\_s** ๋ถ™์Œ + - **\_s ์ ‘๋ฏธ์‚ฌ** : **์ทจ์•ฝ์ ์„ ์ข…๋ฃŒ**ํ•˜๊ธฐ ์œ„ํ•ด **๋Ÿฐํƒ€์ž„ ๊ฒ€์‚ฌ๋ฅผ ๋” ๋งŽ์ด ์ˆ˜ํ–‰**ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์•ˆ์ „ํ•œ ๋ฒ„์ „์ด๋ผ๊ณ  ๊ตฌ๋ถ„ํ•จ + ```c + errno_t strcpy_s(char *restrict dest, rsize_t destsz, const char + *restrict src); + ``` + - ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜ : ๋ณต์‚ฌํ•  ๋ฌธ์ž์—ด (๋‹ค๋ฅธ ๋ณ€์ˆ˜, ๋ฉ”๋ชจ๋ฆฌ) + - ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜ : dest ๋ฒ„ํผ์˜ ๊ธธ์ด + - ํ•จ์ˆ˜๋Š” ํ• ๋‹น๋˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ์— ์“ฐ์ง€ ์•Š๋„๋ก dest ๋ฒ„ํผ์˜ ํฌ๊ธฐ๋ณด๋‹ค src ๋ฌธ์ž์—ด์ด ์งง๊ฑฐ๋‚˜ ๊ฐ™์€์ง€ ํ™•์ธ ๋“ฑ ๋Ÿฐํƒ€์ž„ ๊ฒ€์‚ฌ ์ˆ˜ํ–‰ํ•จ + - ๋ณต์‚ฌ๋  ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ๋ฅผ ์ ์–ด์•ผ ํ•จ! + - ์„ธ ๋ฒˆ์งธ ์ธ์ˆ˜ : ์›๋ณธ ๋ฌธ์ž์—ด + +

โญ 12.6 ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜

+ +- ํ•จ์ˆ˜ ํ˜ธ์ถœ์€ return ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ํ•จ์ˆ˜์˜ ๋ธ”๋ก ๋์— ๋„๋‹ฌํ•˜๋ฉด ์ข…๋ฃŒ +- ํ˜ธ์ถœ์ด ์ ˆ๋Œ€ ๋๋‚˜์ง€ ์•Š์„ ๋•Œ๋„ ์žˆ๋Š”๋ฐ, ๋ณดํ†ต์€ ์–ด๋–ค ์˜๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์ผ๋ถ€๋Ÿฌ ์ˆ˜ํ–‰ํ•จ +- ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜ + + ```c + void main_loop() { + while (1) { + ... + } + } + + int main(int argc, char** argv) { + ... + main_loop(); + return 0; + } + ``` + + - main_loop() ํ•จ์ˆ˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ฃผ์š” ์ž‘์—… ์ˆ˜ํ–‰ํ•˜๊ณ  ํ•จ์ˆ˜์—์„œ ๋Œ์•„์˜ค๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋จ + - ์ด๋Ÿฐ ๊ฒฝ์šฐ์— ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ตœ์ ํ™” ๋” ๋งŽ์ด ์ˆ˜ํ–‰ํ•จ + - But, main_loop() ๋Š” ์–ด๋–ป๊ฒŒ๋“  ์ ˆ๋Œ€ ๋ณ€ํ™˜๋˜์ง€ ์•Š์Œ + - C11 ์—์„œ๋Š” **๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜๋ผ๊ณ  ํ‘œ์‹œ**๋˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์Œ + - stdnoreturn.h ํ—ค๋” ํŒŒ์ผ์˜ **\_Noreturn** ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์ ˆ๋Œ€ ์ข…๋ฃŒ๋˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜ ์ง€์ •ํ•จ + - main_loop ๋ฅผ ๋๋‚˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜๋กœ ํ‘œ์‹œํ•˜๋Š” \_Noreturn ํ‚ค์›Œ๋“œ ์‚ฌ์šฉํ•˜๊ธฐ + ```c + _Noreturn void main_loop() { + while (true) { + ... + } + } + ``` + - ํ”„๋กœ๊ทธ๋žจ์˜ ๋น ๋ฅธ ์ข…๋ฃŒ๋ฅผ ์œ„ํ•ด C11 ์—์„œ ์ตœ๊ทผ์— ์ถ”๊ฐ€๋จ + - exit, quick_exit, abort โ†’ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜๋กœ ๊ฐ„์ฃผํ•จ + - ๋ฐ˜ํ™˜๊ฐ’์ด ์—†๋Š” ํ•จ์ˆ˜์˜ ์กด์žฌ๋ฅผ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉดโ— ์˜๋„์น˜ ์•Š๊ฒŒ ๋ฐ˜ํ™˜๊ฐ’์ด ์—†๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ์ธ์‹ํ•  ์ˆ˜ ์žˆ์Œ โ†’ ๋…ผ๋ฆฌ์  ๋ฒ„๊ทธ์— ๋Œ€ํ•œ ์‹ ํ˜ธ โ†’ ์ ์ ˆํ•˜๊ฒŒ ๊ฒฝ๊ณ ํ•จ ๐Ÿšจ + - But, \_Noreturn ์œผ๋กœ ํ‘œ์‹œํ•œ ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜๊ฐ’์ด ์žˆ๋‹ค๋ฉด ์ •์˜๋˜์ง€ ์•Š์€ ํ–‰์œ„ โ†’ ๊ถŒ์žฅ X + +

โญ 12.7 ํƒ€์ž… ์ œ๋„ค๋ฆญ ๋งคํฌ๋กœ

+ +- C11 ์—์„œ **\_Generic** ์ด๋ผ๋Š” ์ƒˆ ํ‚ค์›Œ๋“œ ๋„์ž… + + - **์ปดํŒŒ์ผ ํ•˜๋Š” ๋™์•ˆ ์ž๋ฃŒํ˜•์„ ์ธ์‹ํ•˜๋Š” ๋งคํฌ๋กœ๋ฅผ ์ž‘์„ฑํ•˜๋Š”๋ฐ ์‚ฌ์šฉ**ํ•จ + - ์ธ์ˆ˜์˜ ์ž๋ฃŒํ˜•์— ๋”ฐ๋ผ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ๋งคํฌ๋กœ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Œ โ†’ **์ผ๋ฐ˜ (Generic) ์„ ํƒ** + + - ์ œ๋„ˆ๋ฆญ ๋งคํฌ๋กœ์˜ ์˜ˆ + + ```c + #include + + #define abs(x) _Generic((x), int: absi, double: absd)(x) + + int absi(int a) { + return a > 0 ? a : -a; + } + + double absd(double a) { + return a > 0 ? a : -a; + } + + int main(int argc, char** argv) { + // C์—์„œ ์˜ค๋ฒ„๋กœ๋”ฉ ๋Œ€์ฒด์šฉ -> ํƒ€์ž… ์ œ๋„ˆ๋ฆญ ๋งคํฌ๋กœ + printf("abs(-2): %d\n", abs(-2)); + printf("abs(2.5): %f\n", abs(2.5)); + return 0; + } + + // abs(-2): 2 + // abs(2.5): 2.500000 + ``` + + - x ์ธ์ˆ˜์˜ ์ž๋ฃŒํ˜•์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ํ‘œํ˜„์„ ์‚ฌ์šฉํ•จ + - **์ •์ˆ˜๊ฐ’**์ด๋ฉด **absi** + - **double ๊ฐ’**์ด๋ผ๋ฉด **absd** + - C11 ์˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ์•„๋‹ˆ์—ˆ๊ณ  ์ด์ „์—๋„ ๋ณผ ์ˆ˜ ์žˆ์—ˆ์œผ๋‚˜ C ํ‘œ์ค€์— ์•ˆ์†ํ–ˆ์Œ (์ง€๊ธˆ์€ ํ‘œ์ค€์ด ๋˜์—ˆ์Œ) + **โ‡’ So, ์ž๋ฃŒํ˜•์„ ์ธ์‹ํ•˜๋Š” ๋งคํฌ๋กœ ์ž‘์„ฑ์ด ๊ฐ€๋Šฅ** + +

โญ 12.8 ์œ ๋‹ˆ์ฝ”๋“œ

+ +- C11 ํ‘œ์ค€์— ์ถ”๊ฐ€๋œ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜ UTF-8, UTF-16, UTF-32 ์ธ์ฝ”๋”ฉ์„ ํ†ตํ•œ ์œ ๋‹ˆ์ฝ”๋“œ ์ง€์› +- C11 ์ด์ „์—๋Š” IBM ์œ ๋‹ˆ์ฝ”๋“œ ๊ตญ์ œ ์ปดํฌ๋„ŒํŠธ (ICU)์™€ ๊ฐ™์€ ์„œ๋“œ ํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•จ +- ์•„์Šคํ‚ค์™€ ์•„์Šคํ‚ค ํ™•์žฅ ๋ฌธ์ž๋ฅผ ์ €์žฅํ•˜๋Š” 8๋น„ํŠธ ๋ณ€์ˆ˜์ธ char์™€ unsigned char ํ˜•๋งŒ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. + - ํ™•์žฅ๋ฌธ์ž: 255 ์ดํ›„์— ํ•ด๋‹นํ•˜๋Š” ์ˆซ์žฃ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด 1๋ฐ”์ดํŠธ ์ด์ƒ์„ ๋” ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ž. +- UTF-8 UTF-16์€ ๊ฐ€๋ณ€ ๊ธธ์ด ์ธ์ฝ”๋”ฉ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. + - ๋ฌธ์ž ๋‹น 1๋ฐ”์ดํŠธ ๋ฏธ๋งŒ์„ ์‚ฌ์šฉํ•˜๋Š” ์ดˆ๊ธฐ ๊ฐ€๋ณ€ ๊ธธ์ด ์ธ์ฝ”๋”ฉ์€ ์ข…์ข… ์ดˆ๊ธฐย ๋งˆ์ดํฌ๋กœ์ปดํ“จํ„ฐ์šฉย ์–ด๋“œ๋ฒค์ฒ˜ ๊ฒŒ์ž„์—์„œ ์˜์–ด ํ…์ŠคํŠธ๋ฅผ ๋” ์ ์€ ๋ฐ”์ดํŠธ๋กœ ํŒจํ‚น(pack)ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋จ +- UTF-8์€ ์•„์Šคํ‚ค์˜ ์ƒ์œ„ ์ง‘ํ•ฉ์œผ๋กœ ๋ด…๋‹ˆ๋‹ค. ์ด๋Š” ์•„์Šคํ‚ค ๋ฌธ์ž(ํ™•์žฅ ์•„์Šคํ‚ค ๋ฌธ์ž๋Š” ์•„๋‹™๋‹ˆ๋‹ค.)์™€ ํ‘œํ˜„์ด ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. + - UTF-16์€ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋‚˜ ๋˜๋Š” 2๊ฐœ์˜ ์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.(๊ฐ ์›Œ๋“œ๋Š” 16๋น„ํŠธ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค + - ์‚ฌ์šฉํ•˜๋Š” 32๋น„ํŠธ CPU(ARM ๋“ฑ)๋ผ๋ฉด ์›Œ๋“œ๋Š” 32๋น„ํŠธ๊ฐ€ ๋œ๋‹ค +- UTF-32๋Š” ๋ชจ๋“  ๋ฌธ์ž์— ๋Œ€ํ•œ ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ •ํ™•ํžˆ 4๋ฐ”์ดํŠธ๋กœ ๊ณ ์ • ํฌ๊ธฐ ์ธ์ฝ”๋”ฉ์ž…๋‹ˆ๋‹ค. +- UTF-8์™€ UTF-16์€ ์ž์ฃผ ๋‚˜์˜ค๋Š” ๋ฌธ์ž์— ๋” ์ž‘์€ ๋ฐ”์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์‘์šฉํ”„๋กœ๊ทธ๋žจ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. +- UTF-32์€ UTF-8์™€ UTF-16์— ๋น„ํ•ด ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ UTF-8์™€ UTF-16์€ ์••์ถ• ์ธ์ฝ”๋”ฉ์ด๋ผ์„œ ๋” ๋งŽ์€ ์—ฐ์‚ฐ์„ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. + +

โญ 12.9 ์ต๋ช… ๊ตฌ์กฐ์ฒด์™€ ์ต๋ช… ๊ณต์šฉ์ฒด

+ +- ์ต๋ช… ๊ตฌ์กฐ์ฒด์™€ ์ต๋ช… ๊ณต์šฉ์ฒด๋Š” ์ด๋ฆ„์„ ๊ฐ–์ง€ ์•Š๋Š” ์ž๋ฃŒํ˜• ์ •์˜๋กœ, ๋ณดํ†ต ๋‹ค๋ฅธ ์ž๋ฃŒํ˜• ๋‚ด์—์„œ ์ค‘์ฒฉ ์ž๋ฃŒํ˜•์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. + +```c +typedef struct { + union { + struct { + int x; + int y; + }; + int data[2]; + }; +} point_t; +``` + +- union๊ณผ struct์˜ ์ด๋ฆ„์ด ์—†๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +```c +/* File name: ExtremeC_examples_chapter12_4.c + * Description: Anonymous structures and unions + */ + +#include + +typedef struct { + union { + struct { + int x; + int y; + }; + int data[2]; + }; +} point_t; + +int main(int argc, char** argv) { + point_t p; + p.x = 10; + p.data[1] = -5; + printf("Point (%d, %d) using anonymous structure.\n", p.x, p.y); + printf("Point (%d, %d) using anonymous byte array.\n", + p.data[0], p.data[1]); + return 0; +} +``` + +

โญ 12.10 ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ

+ +- C์—์„œ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ์€ POSIX ์Šค๋ ˆ๋”ฉ ํ•จ์ˆ˜ ๋˜๋Š” pthread ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ์˜ค๋žซ๋™์•ˆ ์ง€์›์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. +- POSIX ์Šค๋ ˆ๋”ฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ๋ฆฌ๋ˆ…์Šค๋‚˜ ์œ ๋‹‰์Šค ๊ณ„์—ด ์‹œ์Šคํ…œ๊ณผ ๊ฐ™์€ POSIXํ˜ธํ™˜ ์‹œ์Šคํ…œ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +- ์œˆ๋„์šฐ์™€ ๊ฐ™์ด POSIX ํ˜ธํ™˜ ์‹œ์Šคํ…œ์ด ์•„๋‹ ๊ฒฝ์šฐ ์šด์˜์ฒด์ œ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. +- C11์—์„œ๋Š POSIX์˜ ํ˜ธํ™˜๊ณผ ์ƒ๊ด€์—†์ด ํ‘œ์ค€ C๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œ์ค€ ์Šค๋ ˆ๋”ฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. C11ํ‘œ์ค€์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ๋ณ€ํ™”์ž…๋‹ˆ๋‹ค. +- ์œ ๊ฐ์Šค๋Ÿฝ๊ฒŒ๋„ C11 ์Šค๋ ˆ๋”ฉ์€ ๋ฆฌ๋ˆ…์Šค์™€ macOS์—์„œ๋Š” ๊ตฌํ˜„๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. +- C18 ํ‘œ์ค€์€ C11์—์„œ ์ˆ˜์ •ํ•œ ๋ชจ๋“  ๋‚ด์šฉ์„ ํฌํ•จํ•˜๋ฉฐ, ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์€ ๋„์ž…๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.