Extern (์ด๊ธ)
C์ธ์ด์์ extern ํค์๋๋ ๋ค๋ฅธ ํ์ผ์ ์ ์๋ ์ ์ญ ๋ณ์๋ ํจ์๋ฅผ ์ฐธ์กฐํ ์ ์๋๋ก ํด์ค๋ค. ์ด๋ ํ๋ก๊ทธ๋จ์ ์ฌ๋ฌ ํ์ผ ๊ฐ์ ๋ณ์๋ ํจ์๋ฅผ ๊ณต์ ํ ๋ ๋งค์ฐ ์ ์ฉํ๋ค. extern์ ์ฌ์ฉ์ ํฐ ํ๋ก์ ํธ์์ ์์ค ์ฝ๋๋ฅผ ๋ชจ๋ํํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด ์ค๋ค.
โญ1. extern ์ฌ์ฉ ์์
๋ค์ ์์ ์์๋ ๋ ๊ฐ์ ํ์ผ์ ์ฌ์ฉํ์ฌ extern์ ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋ค.
main.c
#include <stdio.h>
// ๋ค๋ฅธ ํ์ผ์์ ์ ์๋ ๋ณ์๋ฅผ ์ฐธ์กฐํ๊ธฐ ์ํด extern ์ฌ์ฉ
extern int sharedVar;
int main() {
printf("Shared Variable: %d\n", sharedVar);
return 0;
}
shared.c
// sharedVar๋ ์ด ํ์ผ์์ ์ ์๋๋ฉฐ, ๋ค๋ฅธ ํ์ผ์์ extern์ ์ฌ์ฉํด ์ ๊ทผํ ์ ์๋ค.
int sharedVar = 10;
์ด ์์ ์์ sharedVar๋ shared.c ํ์ผ์์ ์ ์๋๊ณ ์ด๊ธฐํ๋๋ฉฐ, main.c ํ์ผ์์ extern ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ทผ๋๋ค. ์ด๋ฅผ ํตํด, ํ๋ก๊ทธ๋จ์ ๋ค๋ฅธ ๋ถ๋ถ์์๋ sharedVar๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
โญ2. extern ์ฅ์
- ๋ชจ๋ํ: extern์ ์ฌ์ฉํ๋ฉด ์ฝ๋๋ฅผ ์ฌ๋ฌ ํ์ผ๋ก ๋ถ๋ฆฌํ์ฌ ๊ฐ๊ฐ ๊ด๋ฆฌํ ์ ์๋ค. ์ด๋ ํ๋ก๊ทธ๋จ์ ๋ชจ๋ํ๋ฅผ ์ด์งํ๋ฉฐ, ์ ์ง๋ณด์์ฑ๊ณผ ๊ฐ๋ ์ฑ์ ํฅ์์ํจ๋ค.
- ์ฌ์ฌ์ฉ์ฑ: ๊ณตํต์ผ๋ก ์ฌ์ฉ๋๋ ๋ณ์๋ ํจ์๋ฅผ ๋ณ๋์ ํ์ผ์ ์ ์ํ๊ณ extern์ผ๋ก ์ฐธ์กฐํจ์ผ๋ก์จ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ผ ์ ์๋ค.
- ์ฐ๊ฒฐ: extern์ ํ๋ก๊ทธ๋จ์ ๋ค๋ฅธ ๋ถ๋ถ์์ ์ ์๋ ์ฌ๋ณผ(๋ณ์๋ ํจ์)์ ๋ํ ์ฐ๊ฒฐ์ ์์ฑํ๋ค. ์ปดํ์ผ๋ฌ์ ๋ง์ปค๊ฐ ์ด๋ฌํ ์ฌ๋ณผ๋ค์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฐ๊ฒฐํด์ฃผ๋ฏ๋ก, ํ๋ก๊ทธ๋จ์ ์ ์ฒด ๊ตฌ์กฐ๋ฅผ ์ดํดํ๋ ๋ฐ ๋์์ด ๋๋ค.
โextern ํค์๋์ ์ฌ๋ฐ๋ฅธ ์ฌ์ฉ์ ํฌ๊ณ ๋ณต์กํ C ํ๋ก๊ทธ๋จ์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํ๋ค.
728x90
๋ฐ์ํ
'๐ท C์ธ์ด 30๊ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C/C++ Tip] 17. Static ๋ณ์์ Extern ๋ณ์์ ์ฐจ์ด์ (1) | 2024.11.02 |
---|---|
[C/C++ Tip] 16. Extern ์ค๋ณต ๋ฌธ์ ํด๊ฒฐ (Include Guard) (0) | 2024.11.02 |
[C/C++ Tip] 14. ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น (0) | 2024.10.29 |
[C/C++ Tip] 13. MCU ์ ์ด๋ฅผ ์ํ ๋นํธ ์ฐ์ฐ (0) | 2024.10.29 |
[C/C++ Tip] 12. ํฌ์ธํฐ๊ฐ ํท๊ฐ๋ฆด ์ ๋ฐ์ ์๋ ์ด์ : ๋ณ(*)์ ์ข ๋ฅ์ ์ ์ฒด (1) | 2024.09.21 |