(MISRA-C 7κ°•) λ³€μˆ˜ μ„ μ–Έκ³Ό μŠ€μ½”ν”„ μ œν•œ κ·œμΉ™

πŸš€ 7κ°•: λ³€μˆ˜ μ„ μ–Έκ³Ό μŠ€μ½”ν”„ μ œν•œ κ·œμΉ™

μ•ˆλ…•ν•˜μ„Έμš”! μ˜€λŠ˜μ€ C μ–Έμ–΄ μ½”λ”©μ—μ„œ μ ˆλŒ€ 빼놓을 수 μ—†λŠ” λ³€μˆ˜ μ„ μ–Έκ³Ό μŠ€μ½”ν”„ 관리 이야기λ₯Ό λ“€κ³  μ™”μŠ΅λ‹ˆλ‹€.
λ³€μˆ˜λ₯Ό 잘λͺ» μ“°λ©΄ ν”„λ‘œκ·Έλž¨μ€ 금방 버그 천ꡭ 🐞으둜 변해버리죠.

MISRA-CλŠ” 이λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ μ—¬λŸ¬ κ·œμΉ™μ„ μ œμ‹œν•˜κ³  μžˆμ–΄μš”.


1. μ „μ—­ λ³€μˆ˜ μ‚¬μš© μ΅œμ†Œν™” 🌍

μ „μ—­ λ³€μˆ˜(Global Variable)λŠ” νŽΈλ¦¬ν•΄ λ³΄μ΄μ§€λ§Œ, ν”„λ‘œκ·Έλž¨ 전체에 영ν–₯을 미치기 λ•Œλ¬Έμ— 예츑 λΆˆκ°€λŠ₯ν•œ λΆ€μž‘μš©μ„ μœ λ°œν•  수 μžˆμ–΄μš”.
MISRA-Cμ—μ„œλŠ” μ „μ—­ λ³€μˆ˜ μ‚¬μš©μ„ κΌ­ ν•„μš”ν•œ κ²½μš°μ—λ§Œ μ œν•œμ μœΌλ‘œ ν—ˆμš©ν•©λ‹ˆλ‹€.

 

βœ… 팁:

  • λŒ€μ‹  ν•¨μˆ˜ λ§€κ°œλ³€μˆ˜λ‚˜ 정적(static) μ§€μ—­ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ„Έμš”.
  • ν˜‘μ—… μ‹œ "λˆ„κ°€ 이 값을 λ°”κΏ¨λŠ”μ§€" μΆ”μ ν•˜κΈ° 훨씬 μ‰¬μ›Œμ§‘λ‹ˆλ‹€!

2. λ³€μˆ˜ Shadowing λ°©μ§€ πŸŒ‘

int value = 10;
void func() {
    int value = 20; // 🚨 μ „μ—­ λ³€μˆ˜μ™€ 같은 이름 -> shadowing λ°œμƒ!
}

μœ„ μ˜ˆμ‹œμ²˜λŸΌ 같은 μ΄λ¦„μ˜ λ³€μˆ˜λ₯Ό 쀑첩 μŠ€μ½”ν”„μ—μ„œ μ„ μ–Έν•˜λ©΄, λ°”κΉ₯ λ³€μˆ˜κ°€ κ°€λ €μ Έ ν˜Όλž€μ„ μ€λ‹ˆλ‹€.
MISRA-CλŠ” 이런 상황을 μ—„κ²©νžˆ κΈˆμ§€ν•©λ‹ˆλ‹€.

 

βœ… 팁:

  • λ³€μˆ˜ 이름은 μŠ€μ½”ν”„μ— 맞게 λͺ…ν™•ν•˜κ³  κ³ μœ ν•˜κ²Œ μž‘μ„±ν•˜μ„Έμš”.
  • ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œλŠ” count_local, μ „μ—­ λ³€μˆ˜λΌλ©΄ g_count 같은 넀이밍 κ·œμΉ™μ„ μ„Έμš°λ©΄ μ’‹μ•„μš”.

3. λͺ…ν™•ν•œ μ΄ˆκΈ°ν™” πŸ› οΈ

C μ–Έμ–΄μ˜ μ§€μ—­λ³€μˆ˜λŠ” μžλ™μœΌλ‘œ μ΄ˆκΈ°ν™”λ˜μ§€ μ•ŠμŒ → μ΄ˆκΈ°ν™”ν•˜μ§€ μ•ŠμœΌλ©΄ μ“°λ ˆκΈ° 값이 λ“€μ–΄κ°‘λ‹ˆλ‹€.
MISRA-CλŠ” λͺ¨λ“  λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•Œ λ°˜λ“œμ‹œ μ΄ˆκΈ°ν™”ν•  것을 ꢌμž₯ν•©λ‹ˆλ‹€.

int counter = 0;   // πŸ‘ λͺ…ν™•νžˆ μ΄ˆκΈ°ν™”
float ratio = 0.0; // πŸ‘ μ•ˆμ „ν•œ μ‹œμž‘μ 

 

βœ… 팁:

  • 루프 λ³€μˆ˜λ„ μ„ μ–Έκ³Ό λ™μ‹œμ— μ΄ˆκΈ°ν™”ν•˜μ„Έμš”.
  • ν¬μΈν„°λŠ” NULL둜 μ΄ˆκΈ°ν™”ν•΄ 두면 디버깅 μ‹œ 도움이 λ©λ‹ˆλ‹€.

🎯 였늘의 핡심 정리

  1. μ „μ—­ λ³€μˆ˜λŠ” μ΅œμ†Œν™” → ν”„λ‘œκ·Έλž¨ 예츑 κ°€λŠ₯μ„± 증가
  2. λ³€μˆ˜ Shadowing κΈˆμ§€ → ν˜Όλž€ λ°©μ§€
  3. λͺ¨λ“  λ³€μˆ˜λŠ” μ΄ˆκΈ°ν™” → μ•ˆμ „ν•œ μ‹œμž‘ 보μž₯

πŸ“’ λ‹€μŒ 회차 예고

πŸ‘‰ ν•¨μˆ˜ 섀계 κ·œμΉ™κ³Ό μž¬μ‚¬μš© κ°€λŠ₯ν•œ μ½”λ“œ μž‘μ„± πŸŽ‰
"κΉ¨λ—ν•˜κ³  μž¬μ‚¬μš© κ°€λŠ₯ν•œ ν•¨μˆ˜ λ§Œλ“€κΈ°"에 λŒ€ν•΄ μ•Œμ•„λ³Όκ²Œμš”!


μ˜€λŠ˜λ„ μ•ˆμ „ν•œ C μ½”λ”© μŠ΅κ΄€μ„ μœ„ν•΄ ν•œ 걸음 더 λ‚˜μ•„κ°”μŠ΅λ‹ˆλ‹€. πŸš€

λ°˜μ‘ν˜•