๐ ๏ธโจ 6๊ฐ : ์ ์ฒ๋ฆฌ๊ธฐ ์ฌ์ฉ ๊ท์น๊ณผ ์ฝ๋ ๊ฐ๋ ์ฑ ํ๋ณด
์๋
ํ์ธ์! ์ค๋์ C์ธ์ด ์ ์ฒ๋ฆฌ๊ธฐ(preprocessor) ์ด์ผ๊ธฐ๋ฅผ ํด๋ณผ ๊ฑฐ์์.#define, #ifdef, #include ๊ฐ์ ์ ์ฒ๋ฆฌ๊ธฐ๋ค์ ๊ฐ๋ฐ์์๊ฒ ๊ฐ๋ ฅํ ๋ฌด๊ธฐ๋ฅผ ์ ๊ณตํ์ง๋ง,
์๋ชป ์ฐ๋ฉด ๊ฐ๋
์ฑ ์ ํ์ ์ ์ง๋ณด์ ์ง์ฅ ๐ฅ์ผ๋ก ์ด์ด์ง๋๋ค.
MISRA-C๋ ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ ์ฒ๋ฆฌ๊ธฐ ์ฌ์ฉ ๊ท์น์ ๋ช
ํํ ์ ์ํ๊ณ ์์ด์. ๐ฆ
1. #define์ ์ ํ์ ์ฌ์ฉ ๐
#define์ ์์ ์ ์, ๋งคํฌ๋ก ํจ์ ๋ฑ์ ๋ง์ด ์ฐ์ด์ฃ .
ํ์ง๋ง MISRA-C์์๋ ์ค๋จ์ฉ ๊ธ์ง! ๐ซ
#define PI 3.14 // ๐ซ ๋งค์ง ๋๋ฒ๋ฅผ ์จ๊ฒจ๋ฒ๋ฆผ (ํ์
๋ ์์)
๐ ๋์: const ํน์ enum ์ฌ์ฉ
const float PI = 3.14f; // โ
ํ์
์ด ๋ช
ํํ๊ณ ์์
์ด๋ ๊ฒ ํ๋ฉด ํ์ ์์ ์ฑ๊ณผ ๋๋ฒ๊น ํธ์์ฑ์ด ํ ์ฌ๋ผ๊ฐ๋๋ค. ๐
2. ๋งค์ง ๋๋ฒ(Magic Number) ํํผ ๐ฉโจ
์ฝ๋ ์ค๊ฐ์ ๋ฌ๊ธ์์ด ์ซ์๊ฐ ๋ฑ์ฅํ๋ฉด… ๊ทธ๊ฑด ๋ฐ๋ก ๋งค์ง ๋๋ฒ! ๐งโ๏ธ
MISRA-C์์๋ ๊ฐ๋
์ฑ์ ์ํด ๋งค์ง ๋๋ฒ ์ฌ์ฉ์ ๊ฐ๋ ฅํ ์ ํํฉ๋๋ค.
speed = speed * 60 / 3600; // ๐ซ 60๊ณผ 3600์ ์๋ฏธ ๋ถ๋ช
๐ ๋์: ์๋ฏธ ์๋ ์ด๋ฆ์ ๊ฐ์ง ์์๋ก ๋์ฒด
const int SECONDS_PER_MINUTE = 60;
const int SECONDS_PER_HOUR = 3600;
speed = speed * SECONDS_PER_MINUTE / SECONDS_PER_HOUR; // โ
์ฝ๊ธฐ ์ฌ์
3. ์กฐ๊ฑด๋ถ ์ปดํ์ผ ์ต์ํ โ๏ธ
#ifdef, #ifndef, #else ๊ฐ์ ์กฐ๊ฑด๋ถ ์ปดํ์ผ์ ํ๋ซํผ๋ณ ์ฐจ์ด๋ฅผ ๋ฐ์ํ ๋ ์์ฃผ ์ฐ์ด์ง๋ง, ๋จ๋ฐํ๋ฉด ์ฝ๋๊ฐ ์ฝ๊ธฐ ์ด๋ ค์ด ๋ฏธ๋ก๊ฐ ๋ฉ๋๋ค. ๐
#ifdef DEBUG
printf("Debug mode\n");
#else
run_normal_mode();
#endif
๐ MISRA-C ๊ถ์ฅ ์ฌํญ:
- ์กฐ๊ฑด๋ถ ์ปดํ์ผ์ ๊ผญ ํ์ํ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉ
- ๊ฐ๋ฅํ๋ฉด ์ถ์ํ ๊ณ์ธต(Abstraction Layer)์ผ๋ก ๋์ฒด
#ifdef์ค์ฒฉ ์ฌ์ฉ ๊ธ์ง
์ด๋ ๊ฒ ํ๋ฉด ์ ์ง๋ณด์๊ฐ ํ๊ฒฐ ์ฌ์์ง๋๋ค. ๐
์ค๋์ ์ ๋ฆฌ ๐
#define๋์const,enum,inline์ ๊ทน ํ์ฉ- ๋งค์ง ๋๋ฒ โ → ์๋ฏธ ์๋ ์์ โ
- ์กฐ๊ฑด๋ถ ์ปดํ์ผ์ ๊ผญ ํ์ํ ๊ฒฝ์ฐ์๋ง, ๊ฐ๊ฒฐํ๊ฒ!
์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ๊น๋ํ๊ฒ ๋ค๋ฃจ๋ฉด ์ฝ๋ ๊ฐ๋ ์ฑ๊ณผ ์์ ์ฑ์ด ํ์คํ ์ฌ๋ผ๊ฐ๋๋ค. ๐
๋ค์ ํ์ฐจ ์๊ณ ๐ฌ
๐ ๋ณ์ ์ ์ธ๊ณผ ์ค์ฝํ ์ ํ ๊ท์น
"๋ณ์๋ ํ์ํ ์๊ฐ์๋ง, ์ต์ํ์ ๋ฒ์์์!" MISRA-C์ ๋ณ์ ์ฒ ํ์ ํจ๊ป ์์๋ด
์๋ค.
'SW Dev. > MISRA-C' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| (MISRA-C 8๊ฐ) ํจ์ ์ค๊ณ ๊ท์น๊ณผ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋ ์์ฑ (0) | 2025.09.15 |
|---|---|
| (MISRA-C 7๊ฐ) ๋ณ์ ์ ์ธ๊ณผ ์ค์ฝํ ์ ํ ๊ท์น (0) | 2025.09.11 |
| (MISRA-C 5๊ฐ) ํฌ์ธํฐ ์ฌ์ฉ ์ ํ๊ณผ ์์ ํ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ (1) | 2025.08.21 |
| (MISRA-C 4๊ฐ) ์ ์ด ํ๋ฆ๊ณผ ์กฐ๊ฑด๋ฌธ ๊ท์น (4) | 2025.08.16 |
| (MISRA-C 3๊ฐ) Rule Categories: ๊ธฐ๋ณธ ๋ฌธ๋ฒ & ํ์ ์์ ์ฑ ๊ท์น (5) | 2025.08.12 |
