프로그래밍언어/C언어[Error]
[C언어][Error] 038. conflicting types for ‘main’ – main 함수와 정의가 충돌함
about_IT
2025. 4. 27. 17:04
이 오류는 main 함수에 대해 서로 다른 선언이 존재하여 타입 충돌이 발생했을 때 나타납니다. C언어에서는 main 함수는 특별한 함수로, 표준에 따라 정확한 형태로 정의되어야 하며, 여러 곳에서 서로 다른 방식으로 선언되면 컴파일러가 충돌을 인식하게 됩니다.
보통 헤더 파일이나 다른 소스 파일에 main 함수에 대한 잘못된 선언이 존재하거나, 리턴 타입 또는 인자의 형태가 표준과 다를 경우에 발생합니다.
● 오류 예제
// header.h
void main(); // 잘못된 선언
// main.c
#include "header.h"
#include <stdio.h>
int main() {
printf("Hello\n");
return 0;
}
컴파일러는 다음과 같은 오류 메시지를 출력합니다.
error: conflicting types for ‘main’
● 해결 방법
main 함수는 반드시 다음 중 하나의 표준 형태로 선언되어야 하며, 헤더나 다른 파일에서 이와 일치하는 선언을 해야 합니다.
int main(void);
int main(int argc, char *argv[]);
아래는 올바른 예시입니다:
#include <stdio.h>
int main(void) {
printf("Hello\n");
return 0;
}
출력 결과:
Hello
● 실전 팁
- main 함수는 반드시 표준에 맞게 int형으로 선언되어야 하며, void main()은 사용하지 마세요.
- 헤더 파일에 main 선언이 들어가지 않도록 주의하세요.
- main 함수는 오직 하나만 정의되어야 하며, 선언부와 정의부가 충돌하지 않도록 확인해야 합니다.
main 함수는 C 프로그램의 시작점이므로, 선언과 정의가 정확히 일치해야 합니다. 충돌이 발생하지 않도록 다른 파일이나 헤더에서 main을 잘못 정의하지 않도록 주의하세요.