Multiple Definition of first defined here

2023년 07월 27일 by 진아사랑해

    Multiple Definition of first defined here 목차
반응형

C언어로 프로그램을 작성하다 보면 중복으로 정의가 되어 있다는 에러를 가끔 마주하게 됩니다.

이러한 에러가 왜 나오는지에 대해 간략하게 알아보겠습니다.

에러가 발생하는 구문 예제

a.h라는 파일

#ifndef _A.H_

#define _A.H_

int a;

#endif

 

main.c

#include "a.h"

main(){

 

}

 

a.c

#include "a.h"

void a(){

 

}

이렇게 프로그램을 작성하면 Multiple Definition 에러가 발생합니다.

에러가 발생하는 이유 및 해결책

gcc에서는 별도의 파일에 동일한 변수가 선언되는 것을 허용하지 않습니다.

#ifndef _A.H_ 를 사용하여도 동일한 에러가 발생합니다.

gcc 10.0부터 이러한 기능이 강화되었습니다.

main.c 또는 a.c에 int a를 선언하고

a.h 파일에 extern int a;로 정의하여 필요한 파일에 include "a.h"를 하는 것이 좋습니다.

a.h

extern int a;

 

main.c

int a;

main(){

 

}

 

a.c

#include "a.h"

a(){

 

}

이렇게 하는 것이 에러를 없애는 방법입니다.

 

반응형