#define์ ์ ์ฌ์ฉํ๋ ๊ฑธ๊น?
๋จ์ํ ์์ ์ฒ๋ฆฌํ๊ธฐ ์ํด define์ ์ฌ์ฉํ๋ ๊ฒ์ผ๊น?์ด๋ฅผ ์๊ธฐ ์ํด์ ์์ค ์ฝ๋์ ๋ณํ ๊ณผ์ ์ ์ ํ์๊ฐ ์๋ค.
โ
โญ1. Build ์์
Build์ ์์๋ ์๋์ ๊ฐ๋ค.
exe ํ์ผ ์์ฑ : ์์ค์ฝ๋ -> ์ ์ฒ๋ฆฌ -> ์ปดํ์ผ -> ๋งํฌ -> ์คํ
mcu ํฅ์ฌ ํ์ผ ์์ฑ : ์์ค์ฝ๋ -> ์ ์ฒ๋ฆฌ -> ์ปดํ์ผ -> ์ด์ ๋ธ๋ฆฌ์ด ๋ณํ -> ํฅ์ฌ ํ์ผ ์์ฑ -> MCU ๋ค์ด๋ก๋
โ
C์ธ์ด๋ฅผ ์ฒ์ ๊ณต๋ถํ ๋, #define์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์ ์ฒ๋ฆฌ ๊ณผ์ ์ ๊ฑฐ์น์ง ์๋๋ค๊ณ ์๊ฐํ ์ ์ด ์๋ค.
#์ผ๋ก ์์ํ๋ ๋ฌธ์ฅ์ ์ ๋ถ ์ ์ฒ๋ฆฌ๊ธฐ ์ง์์์์๋ #include๋ ์ ์ฒ๋ฆฌ๊ธฐ๋ผ๊ณ ์๊ฐํ์ง ์์๋ค. ํญ์ C์ธ์ด๋ฅผ ์ค์ตํ ๋,
์๋ฌด์ ์ผ๋ก #inlcude <stdio.h>๋ฅผ ์์ฑํ ํํด์ด๋ค.
โ
โญ2. ์ ์ฒ๋ฆฌ๋ ๋ฌด์์ธ๊ฐ?
์ ์ฒ๋ฆฌ๋ ๋ฌด์์ธ๊ฐ?
์ปดํ์ผ ์ ์ ์ฒ๋ฆฌ๋๋ ํ๋ ์์ ์ด๊ณ ์ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ ์ฅ์น๋ฅผ ์ ์ฒ๋ฆฌ๊ธฐ๋ผ๊ณ ํ๋ค.
์ ์ฒ๋ฆฌ๊ธฐ๋ ํค๋ ํ์ผ์ ๋ถ๋ฌ์ค๊ฑฐ๋, ์์ค ํ์ผ ๋ด๋ถ์ ํน์ ๋ฌธ์์ด์ ์์ ๋๋ ๋ฌธ์๋ก ์นํํ๊ฑฐ๋, ์กฐ๊ฑด์ ๋ฐ๋ผ์ ์ฝ๋์ ์ผ๋ถ๋ฅผ ์ปดํ์ผํ๊ฑฐ๋ ์ปดํ์ผํ์ง ๋ชปํ๊ฒ ํ๋ ์ ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
๊ถ๊ธ์ฆ์ด ํ๋ ๋ฐ์ํ๋ค.
#define์ ์ ์ฌ์ฉํ๋๊ฐ? ๋จ์ํ ๋ณ์๋ ํจ์๋ฅผ ์ ์ธ ๋ฐ ํธ์ถํ๋ฉด ๋์ง ์๋๊ฐ? ์ผ๋ฐ ๋ณ์ ๋ฐ ํจ์์ ๋งคํฌ๋ก(#define)์ ์ฐจ์ด๋ ๋ฌด์์ธ๊ฐ?
์ด๋ฅผ ์ดํดํ๊ธฐ ์ํด์ ์ปดํ์ผ ๋จ๊ณ๋ฅผ ์ดํดํ ํ์๊ฐ ์๋ค.
์ปดํ์ผ์ด๋ ๋ฌด์์ธ๊ฐ? ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญํ๋ ๋ฒ์ญ๊ธฐ์ด๋ค. ์ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญํ๋๊ฐ? ์์ค ์ฝ๋๋ ์ฌ๋์ด ์ดํดํ๊ธฐ ์ฌ์ด ๋ฌธ์ฅ์ด๋ฉฐ, ๊ธฐ๊ณ๋ ์ดํดํ ์ ์๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๊ธฐ๊ณ๊ฐ ์ดํดํ ์ ์๋ ๋ฌธ์ฅ์ผ๋ก ๋ฒ์ญํด์ค์ผ ํ๋ค.
C์ธ์ด๊ฐ ์๊ธฐ๊ธฐ ์ด ์ , ๊ฐ๋ฐ์๋ค์ ๊ธฐ๊ณ(์ปดํจํฐ, CPU)๋ฅผ ์ง์ ์ ์ดํ๊ธฐ ์ํด ๊ธฐ๊ณ์ด(์ด์ ๋ธ๋ฆฌ์ด)๋ฅผ ์ง์ ์์ฑํ์๋ค. ํ์ง๋ง CPU๋ ๋ค์ํ๊ณ , CPU์ ์ข ๋ฅ์ ๋ฐ๋ผ ์ด์ ๋ธ๋ฆฌ์ด ์์ฑํ๋ ๋ฐฉ๋ฒ๋ ๊ฐ๊ธฐ ๋ฌ๋๋ค๊ณ ํ๋ฉฐ, ๊ฐ๋จํ ํ๋ก๊ทธ๋จ์๋ ์ฝ๋๊ฐ ๊ต์ฅํ ๊ธธ์ด์ก๋ค.
์ด ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด, ๊ธฐ๊ณ์ด๋ฅผ ์ง์ ์ฌ๋์ด ์์ฑํ์ง ์์๋ ๋๋ ๋ฒ์ญ๊ธฐ๋ฅผ ๊ฐ๋ฐํ๋๋ฐ ๊ทธ๊ฒ์ด ์ปดํ์ผ๋ฌ์ด๋ค. ๊ฐ๋ฐ์๋ค์ ๋ ์ด์ ๊ธฐ๊ณ์ ์ข ๋ฅ๋ฅผ ๊ณ ๋ คํ์ง ์์๋ ๋๋ค.
typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned long u32;
typedef signed char s8;
typedef signed short s16;
typedef signed long s32;
unsigned char๋ฅผ u8์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ๋์ฒดํ๋ค๋ ๊ฒ์ด๋ค.
์ด์ ๋ ๊ฐ๋จํ๋ค. unsigned char๊ฐ ๋๋ฌด ๊ธธ๊ธฐ ๋๋ฌธ์ด๋ค.
(์ฝ๋๋ฅผ ์ปดํ์ผํ ๋, ์ ์ฒ๋ฆฌ๊ธฐ๊ฐ u8์ unsigned char๋ก ์๋์ผ๋ก ์นํํ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ ์ฐจ์ด๋ ์กด์ฌํ์ง ์๋๋ค.)
ํ๋ก์ ํธ๊ฐ ์ ์ ์ปค์ง๋ฉด, ์ฝ๋์ ๊ธธ์ด์ ํธ๋ฆฌ์ ๋์ค(Depth)๊ฐ ๋์ด๋๊ธฐ ๋๋ฌธ์ ํฐ ํ๋ก์ ํธ์ผ ์๋ก ์ต๋ํ ์ฌํํ๊ฒ ๊ฐ์ ธ๊ฐ๋ ค๊ณ ๋
ธ๋ ฅํ๋ค.
์ ์ง์ฌ์ง ์ฝ๋๋ ๋จ๋ค๋ ์ฝ๊ฒ ์ดํดํ ์ ์๋ ์ฝ๋์ฌ์ผ ํ๋ค. (ํนํ ์ ์ฅ ์
๊ณ๋ ์ฝ๋๋ฅผ ์ค์ด๋ ๊ฒ ๋ณด๋ค ๊ธ์ ์ฐ๋ฏ ์ผ๋ถ๋ฌ ํ์ด ์ฐ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.)
๊ฐ๋ ๋ณต์กํ ์๊ณ ๋ฆฌ์ฆ์ด๋ ์ฝ๋๋ก ์ง๋๊ฒ ๊ณ ์๋ผ๊ณ ์๊ฐํ ์ ์์ง๋ง, ๋ฌด์กฐ๊ฑด simple is best์ด๋ค.
๊ฐ๋
์ฑ์ด ๋ฎ์ ์ฝ๋๋ ์ ๋ ์ข์ ์ฝ๋๊ฐ ๋ ์ ์๋ค.
์๋๋ ํ ์ฝ๋์ด๋ค.
๊ฐ๋จํ ์ฝ๋ ๋๋ ค๋ณด๊ณ ์ถ๋ค๋ฉด, ๊ด์ฐฎ์ ์จ๋ผ์ธ ์ปดํ์ผ๋ฌ๋ ๋ง์ผ๋ฏ๋ก ๊ตณ์ด ๊ฐ๋ฐ ํ๊ฒฝ์ ๋์ ์ํฌ ํ์ ์์ด ๋ฐ๋ก ๋น๋ํด๋ณผ ์ ์๋ค. ์๋ ๋งํฌ๋ฅผ ํตํด์ ๋ฐ๋ก ๋น๋ํด ๋ณผ ์ ์์ผ๋ ์ฐธ๊ณ ๋ฐ๋๋ค.
โ
https://www.mycompiler.io/ko/new/c
#include <stdio.h>
typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned long u32;
typedef signed char s8;
typedef signed short s16;
typedef signed long s32;
int main() {
u8 l_signal8bitOut = 10;
u16 l_signal16bitOut = 65000;
u32 l_signal32bitOut = 300000000;
printf("%d!\n", l_signal8bitOut);
printf("%d!\n", l_signal16bitOut);
printf("%ld!\n", l_signal32bitOut);
return 0;
}
728x90
๋ฐ์ํ
'๐ท C์ธ์ด 30๊ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C/C++ Tip] 6. UNION ๊ณต์ฉ์ฒด์ STRUCT ๊ตฌ์กฐ์ฒด๋ก ํจํท ๋ง๋ค๊ธฐ (2) | 2024.09.04 |
---|---|
[C/C++ Tip] 5. ๊ตฌ์กฐ์ฒด ํจ๋ฉ์ ํ์์ฑ (0) | 2024.09.04 |
[C/C++ Tip] 4. ๊ตฌ์กฐ์ฒด ํ์ฉ: ํจ์จ์ ์ธ ๋ฐ์ดํฐ ๊ด๋ฆฌ (2) | 2024.09.02 |
[C/C++ Tip] 3. ์ฝ๋ฉ ๊ท์น. ๋ณ์๋ช ์ ํ๊ธฐ (0) | 2024.09.01 |
[C/C++ Tip] 2. #define์ ๋ชฉ์ (0) | 2024.09.01 |