๐ MISRA-C:2012 ์ค๋ฌด ๊ฐ์ 3๊ฐ : Rule Categories: ๊ธฐ๋ณธ ๋ฌธ๋ฒ & ํ์ ์์ ์ฑ ๊ท์น
๐ ๋ค์ด๊ฐ๋ฉฐ
C ์ธ์ด๋ ๋น ๋ฅด๊ณ ๊ฐ๋ ฅํฉ๋๋ค.
๊ทธ๋ฐ๋ฐ ๋์์ ์ํํ๊ณ ๋ณ๋์ค๋ฌ์ด ๋ฉด๋ ์์ฃ .
์๋๊ณ ์? ๋ฐ๋ก Undefined Behavior(UB) ๋๋ฌธ์
๋๋ค.
MISRA-C:2012์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ๊ณผ ํ์
์์ ์ฑ ๊ท์น์
์ด UB๋ผ๋ “์ ์ฌ์ ์ฌ๊ณ ์ ๋ฐ์”๋ฅผ ์์ฒ ์ฐจ๋จํ๊ธฐ ์ํ ๋ฐฉํจ์
๋๋ค. ๐ก
๐ Undefined Behavior, ๋ ์ ์ฒด๊ฐ ๋ญ๋?
UB(์ ์๋์ง ์์ ๋์)๋ ๋ง ๊ทธ๋๋ก
C ํ์ค์์ “์ด ์ํฉ์ ์ ์ ์ ํจ”์ด๋ผ๊ณ ์ ์ธํด ๋ฒ๋ฆฐ ๊ฒฝ์ฐ์
๋๋ค.
์ฆ, ์ปดํ์ผ๋ฌ๊ฐ ๋ง์๋๋ก ์ฒ๋ฆฌํด ๋ฒ๋ฆฝ๋๋ค.
๊ฒฐ๊ณผ๋ ์ด๋ ์ฃ :
- ๋๋ฒ๊ทธ ๋ชจ๋ → ์ ์ ๋์ํ๋ ๊ฒ ๊ฐ์ โ
- ๋ฆด๋ฆฌ์ฆ ๋ชจ๋ → ๊ฐ์๊ธฐ ์ค์๋ ๐ฅ
- ๋ค๋ฅธ ์ปดํ์ผ๋ฌ → ์์ ํ ๋ค๋ฅธ ๊ฒฐ๊ณผ ๐คฏ
๐ต๏ธ UB์ ์ค์ ์์
- ์ ์ ์ค๋ฒํ๋ก
int x = INT_MAX; x = x + 1; // ํ์ค: "๋ชฐ๋ผ. ๋๊ฐ ์์์ ํด." - ๋ฐฐ์ด ๋ฒ์ ์ด๊ณผ ์ ๊ทผ
int arr[3] = {1, 2, 3}; int y = arr[5]; // ์กด์ฌํ์ง ์๋ ๋ฐ์ดํฐ์ ์ ๋ป๊ธฐ - ์๋ชป๋ ํ์
๋ณํ
float f = 3.14f; int i = *(int*)&f; // ๋ฉ๋ชจ๋ฆฌ ์ฌํด์, ๊ฒฐ๊ณผ ์์ธก ๋ถ๊ฐ - 0์ผ๋ก ๋๋๊ธฐ
int z = 10 / 0; // ์ํ ์ ์๋์ด ๊ธฐ์
๐ก MISRA-C์ UB ๋ฐฉ์ด ๊ท์น: ํต์ฌ ์นดํ ๊ณ ๋ฆฌ
1. ๊ธฐ๋ณธ ๋ฌธ๋ฒ(Syntax) ๊ท์น
- C ํ์ค์์ ํ์ฉํ์ง๋ง ๋ฒ๊ทธ ๊ฐ๋ฅ์ฑ์ด ๋์ ๊ตฌ๋ฌธ ์ ํ
์: goto ์ฌ์ฉ ์ ํ, ๋ณต์กํ ๋งคํฌ๋ก ๊ธ์ง
- ํจ๊ณผ: ์ฝ๋ ๊ฐ๋ ์ฑ ํฅ์ & ๋๋ฒ๊น ๋์ด๋ ๊ฐ์
2. ํ์ ์์ ์ฑ(Type Safety) ๊ท์น
- ์๋ฌต์ ํ์ ๋ณํ ๋์ ๋ช ์์ ์บ์คํ ์๊ตฌ
- ์๋ก ๋ค๋ฅธ ํ์ ๊ฐ ์ฐ์ฐ ์ ํ
- ํจ๊ณผ: ๋ฐ์ดํฐ ํด์ ์ค๋ฅ ๋ฐฉ์ง & ์ปดํ์ผ๋ฌ ๊ฒฝ๊ณ ๊ฐ์
3. ์ ์/์ฐ์ ์ฐ์ฐ ๊ท์น
- ๋ถํธ ์๋/์๋ ์ ์ ํผํฉ ์ฐ์ฐ ์ฃผ์
- ์ค๋ฒํ๋ก·์ธ๋ํ๋ก ์๋ฐฉ
- ํจ๊ณผ: ์์ธก ๊ฐ๋ฅ์ฑ ํ๋ณด, ํ๋ซํผ ์์กด์ฑ ์ถ์
4. ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ๊ท์น
- ๋ฐฐ์ด ๋ฒ์ ์ด๊ณผ ๊ธ์ง
- NULL ํฌ์ธํฐ ์ญ์ฐธ์กฐ ๋ฐฉ์ง
- ํจ๊ณผ: ํฌ๋์·๋ฐ์ดํฐ ์์ ์๋ฐฉ
๐ ํ๋์ ๋ณด๋ ๊ท์น ์์ฝ
| ๊ท์น ์นดํ ๊ณ ๋ฆฌ | ์ฃผ์ ์์ | ๋ชฉ์ |
|---|---|---|
| ๊ธฐ๋ณธ ๋ฌธ๋ฒ | goto ์ ํ, ์ํํ ๋งคํฌ๋ก ๊ธ์ง |
์ ์ด ํ๋ฆ ๋ช ํํ |
| ํ์ ์์ ์ฑ | ๋ช ์์ ์บ์คํ , ํผํฉ ์ฐ์ฐ ์ ํ | ํ์ ๋ณํ ์์ ์ฑ |
| ์ ์ ์ฐ์ฐ | ๋ถํธ ํผํฉ ์ฃผ์, ์ค๋ฒํ๋ก ๋ฐฉ์ง | ์์ธก ๊ฐ๋ฅ์ฑ |
| ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ | ๋ฒ์ ์ด๊ณผ ์ ๊ทผ ๊ธ์ง | ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ |
๐ก ์ค๋ฌด ์กฐ์ธ
UB๋ “ํ
์คํธ์์ ์ ํฐ์ง๋ฉด ๊ด์ฐฎ๋ค”๊ฐ ์ ๋ ์๋๋๋ค.
ํ๋์์ ์ฌํ๋๋ฉด, ์ด๋ฏธ ๋ฆ์์ฃ .
MISRA-C ๊ท์น์ ์งํค๋ฉด ์ ์ ๋ถ์ ๋๊ตฌ๊ฐ ์ฌ์ ์ ์ก์์ค๋๋ค.
์ฆ, ์๋ฐฉ์ด ๊ณง ๋น์ฉ ์ ๊ฐ์
๋๋ค. ๐ฐ
๐ข ๋ค์ ํ์ฐจ ์๊ณ
4๊ฐ: MISRA-C์์์ ์ ์ด ํ๋ฆ๊ณผ ์กฐ๊ฑด๋ฌธ ๊ท์น
if,switch,for… ๋จ์ํ ์ ์ด๋ฌธ์ด ์์ ๊ท์น์ ํซ์คํ?
๋ค์ ์๊ฐ์๋ ์์ ํ ํ๋ฆ ์ ์ด์ ๋น๋ฐ๊ณผ
์กฐ๊ฑด๋ฌธ์์ ๋น ์ง๊ธฐ ์ฌ์ด ํจ์ ์ ํ์ด๋๋ฆฝ๋๋ค!
'SW Dev. > MISRA-C' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| (MISRA-C 6๊ฐ) ์ ์ฒ๋ฆฌ๊ธฐ ์ฌ์ฉ ๊ท์น๊ณผ ์ฝ๋ ๊ฐ๋ ์ฑ ํ๋ณด (0) | 2025.09.07 |
|---|---|
| (MISRA-C 5๊ฐ) ํฌ์ธํฐ ์ฌ์ฉ ์ ํ๊ณผ ์์ ํ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ (1) | 2025.08.21 |
| (MISRA-C 4๊ฐ) ์ ์ด ํ๋ฆ๊ณผ ์กฐ๊ฑด๋ฌธ ๊ท์น (4) | 2025.08.16 |
| (MISRA-C 2๊ฐ) ๊ตฌ์กฐ์ ์ฃผ์ ๊ฐ๋ ์ดํดํ๊ธฐ (5) | 2025.08.08 |
| (MISRA-C 1๊ฐ) ํ์ ๋ฐฐ๊ฒฝ๊ณผ ์ ์ฉ ๋ชฉ์ (5) | 2025.08.05 |
