python & 라즈베리파이
Multiple Definition of first defined here
진아사랑해
2023. 7. 27. 19:56
반응형
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(){
}
이렇게 하는 것이 에러를 없애는 방법입니다.
반응형