study gomi

[c] λ§€κ°œλ³€μˆ˜κ°€ μ—†λŠ” ν•¨μˆ˜ μ„ μ–Έ 방법/Cμ—μ„œ λ§€κ°œλ³€μˆ˜ μ—†λŠ” ν•¨μˆ˜μ˜ 경우 voidλ₯Ό μ¨μ£ΌλŠ” 이유 (c++κ³Ό 차이) λ³Έλ¬Έ

basic/c

[c] λ§€κ°œλ³€μˆ˜κ°€ μ—†λŠ” ν•¨μˆ˜ μ„ μ–Έ 방법/Cμ—μ„œ λ§€κ°œλ³€μˆ˜ μ—†λŠ” ν•¨μˆ˜μ˜ 경우 voidλ₯Ό μ¨μ£ΌλŠ” 이유 (c++κ³Ό 차이)

κ³΅λΆ€ν•˜κ³° 2025. 2. 5. 17:52
728x90
λ°˜μ‘ν˜•

πŸ“Œ λ§€κ°œλ³€μˆ˜κ°€ μ—†λŠ” ν•¨μˆ˜ μ„ μ–Έ 방법

void myFunction(void);  // (1) ꢌμž₯ 방식
void myFunction();      // (2) λ™μž‘ν•˜μ§€λ§Œ Cμ—μ„œλŠ” μœ„ν—˜ν•  수 있음

이 두 κ°œκ°€ κ°™μ•„ λ³΄μ΄μ§€λ§Œ cμ—μ„œλŠ” 차이가 μžˆλ‹€.

 


πŸ“voidλ₯Ό λͺ…μ‹œν•˜λŠ” 이유

cμ–Έμ–΄μ—μ„œ myFunction();κ³Ό myFunction(void)λŠ” 같은 μ˜λ―Έκ°€ μ•„λ‹˜.

이 차이λ₯Ό μ΄ν•΄ν•˜λ €λ©΄ c와 c++의 차이λ₯Ό μ•Œμ•„μ•Ό ν•œλ‹€.

 

βœ… Cμ—μ„œ void myFunction(void);

void myFunction(void);
  • λ§€κ°œλ³€μˆ˜κ°€ μ—†λ‹€λŠ” κ±Έ λͺ…ν™•ν•˜κ²Œ μ„ μ–Έν•˜λŠ” 것.
  • λ”°λΌμ„œ myFunction(10); 같은 잘λͺ»λœ ν˜ΈμΆœμ„ ν•˜λ©΄ 컴파일 μ—λŸ¬κ°€ λ°œμƒ
  • 즉, λ§€κ°œλ³€μˆ˜λ₯Ό 받을 수 μ—†λ‹€λŠ” κ±Έ λͺ…ν™•νžˆ 함.
#include <stdio.h>

void sayHello(void) {  // λ§€κ°œλ³€μˆ˜ μ—†μŒ
    printf("Hello!\n");
}

int main() {
    sayHello();  // βœ… 정상 호좜
    sayHello(123);  // ❌ 컴파일 μ—λŸ¬ (λ§€κ°œλ³€μˆ˜λ₯Ό 받을 수 μ—†μŒ)
    return 0;
}

 

 

βœ… Cμ—μ„œ void myFunction(); (λΉ„μ–΄ μžˆλŠ” κ΄„ν˜Έ)

void myFunction();
  • Cμ—μ„œλŠ” μ΄λ ‡κ²Œ μ„ μ–Έν•˜λ©΄ 'λ§€κ°œλ³€μˆ˜κ°€ μžˆμ„ μˆ˜λ„ 있고 없을 μˆ˜λ„ μžˆλ‹€'λŠ” μ˜λ―Έκ°€ 됨.
  • 즉, myFunction(10); 을 ν˜ΈμΆœν•΄λ„ μ»΄νŒŒμΌλŸ¬κ°€ 였λ₯˜λ₯Ό λ‚΄μ§€ μ•Šκ³  ν—ˆμš©ν•  μˆ˜λ„ 있음. 🚨
  • 이러 κ°œλ°œμžκ°€ μ‹€μˆ˜ν•  κ°€λŠ₯성이 높아짐.
#include <stdio.h>

void saySomething();  // λ§€κ°œλ³€μˆ˜κ°€ μžˆμ„ μˆ˜λ„, 없을 μˆ˜λ„ 있음

int main() {
    saySomething(10);  // ❌ μ›λž˜ μ˜λ„μ™€ λ‹€λ₯΄κ²Œ λ™μž‘ν•  수 있음
    return 0;
}

void saySomething() {
    printf("μ•ˆλ…•ν•˜μ„Έμš”!\n");
}

↑ μ΄λ ‡κ²Œ ν•˜λ©΄ μ»΄νŒŒμΌλŸ¬μ— 따라 κ²½κ³  없이 잘λͺ»λœ ν˜ΈμΆœμ„ ν—ˆμš©ν•  μˆ˜λ„ 있음.

이 λ•Œλ¬Έμ— λ§€κ°œλ³€μˆ˜κ°€ 없을 λ•ŒλŠ” voidλ₯Ό λͺ…μ‹œν•˜λŠ” 게 μ•ˆμ „ν•œ 방법이닀.


πŸ“C++μ—μ„œλŠ” void myFunction(); 이 μ•ˆμ „ν•œ 이유

C++μ—μ„œλŠ” void myFunction();κ³Ό void myFunction(void);이 μ™„μ „νžˆ λ™μΌν•˜κ²Œ λ™μž‘ν•œλ‹€.

즉, myFunction();이라고만 써도 '이 ν•¨μˆ˜λŠ” λ§€κ°œλ³€μˆ˜κ°€ μ—†λ‹€'라고 μ»΄νŒŒμΌλŸ¬κ°€ μ΄ν•΄ν•œλ‹€.

void myFunction();      // C++μ—μ„œλŠ” λ§€κ°œλ³€μˆ˜κ°€ μ—†λŠ” ν•¨μˆ˜λ‘œ 인식됨
void myFunction(void);  // C++μ—μ„œλŠ” ꡳ이 voidλ₯Ό λ„£μ§€ μ•Šμ•„λ„ 됨

↑ C++μ—μ„œλŠ” μœ„ 두 κ°œκ°€ 동일

 

🚨 ν•˜μ§€λ§Œ C++κ³Ό 달리 Cμ—μ„œλŠ” μ˜λ―Έκ°€ λ‹€λ₯Ό 수 μžˆμœΌλ―€λ‘œ, 항상 voidλ₯Ό λͺ…μ‹œν•˜λŠ” 것이 μ’‹λ‹€!


πŸš€ μ΅œμ’… 정리

μ„ μ–Έ 방식 Cμ—μ„œμ˜ 의미 C++μ—μ„œ 의미
void func(void); λ§€κ°œλ³€μˆ˜ μ—†μŒ(μ•ˆμ „) λ§€κ°œλ³€μˆ˜ μ—†μŒ
void func(); ⚠️ λ§€κ°œλ³€μˆ˜ μžˆμ„ μˆ˜λ„ 있음(μœ„ν—˜) λ§€κ°œλ³€μˆ˜ μ—†μŒ

 

즉, Cμ—μ„œλŠ” λ§€κ°œλ³€μˆ˜κ°€ 없을 λ•Œ voidλ₯Ό λͺ…μ‹œν•΄μ•Ό μ•ˆμ „ν•œ μ½”λ“œκ°€ λœλ‹€! πŸ’‘

728x90
λ°˜μ‘ν˜•