이번 시간에는 int main()과 int main(void), 그리고 void main()의 차이점에서 설명하겠습니다.
// 1번 항목
int main()
{
return 0;
}
// 2번 항목
int main(void)
{
return 0;
}
위에 작성한 1번 항목과 2번 항목의 차이점은 무엇일까요?
사실 C나 C++에서 모두 작동합니다. 다만, C에서는 매개변수로 void가 존재하는 것, 즉 int main(void)가 매개변수를 넣지 않고서만 작동을 하기 때문에 기술적으로 더 나은 것으로 판단합니다. C에서는 함수의 매개변수를 지정하지 않으면 이는 여러 매개변수를 사용하거나, 매개변수 없이 모두 사용가능함을 의미합니다.
예를 들어,
// 1번 항목
void mat() { }
int main(void)
{
mat(10, "ff", "FGF");
return 0;
}
// 2번 항목
void mat(void) { }
int main(void)
{
mat(10, "ff", "FGF");
return 0;
}
위의 1번 항목과 2번 항목을 비교해봅시다.
1번 항목에서는 C에서 컴파일이 가능하지만, C++의 경우 컴파일 오류가 발생합니다.
2번 항목에서는 C와 C++ 모두 컴파일 오류가 발생합니다.
이처럼, C에서 int main()은 여러 매개변수를 사용하여 호출할 수 있지만, int main(void)는 매개변수없이만 호출이 가능하다는 점입니다. 대부분의 경우 차이가 없지만 "int main(void)"가 C에서 권장되는 방법입니다.
남은 항목은 void main() 이겠죠!
사실 void main() 혹은 main()을 쓰면 오류가 나는 것은 아닙니다. C와 관련된 표준 C99에서는 정상적인 실행의 경우 main 함수는 int 0을 return 해야한다고 알려줍니다. 컴파일러가 허용한다고는 하지만, C와 C++을 쓰는 프로그래머라면 이건 당연히 해야하는 일 정도로 생각하시면 될 것 같습니다. C++의 경우 명시적인 return 문을 포함할 필요는 없습니다. 이 경우 반환되는 값은 0이며, 실행 성공을 의미합니다. 하지만 습관적으로라도 return 0; 는 명시적으로 꼭 쓰는게 동료 개발자와의 혼동을 없애는 것일지도 모릅니다.
'C, C++, C#' 카테고리의 다른 글
C++ 에서 string 문자열과 char 배열 비교하기 (0) | 2023.05.23 |
---|---|
C 언어 기초 (C Language) (0) | 2021.02.01 |
C# / .NET - Exception 예외 종류와 설명 (0) | 2018.12.11 |