- 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(){
}
이렇게 하는 것이 에러를 없애는 방법입니다.
반응형
'python & 라즈베리파이' 카테고리의 다른 글
Python 설치, VSCode 연동, 가상환경(venv) (0) | 2023.08.18 |
---|---|
using ad-hoc certificates requires the cryptography library in Flask (0) | 2023.08.18 |
VSCode 확대 축소 전체화면 (0) | 2023.07.26 |
[Git]VSCode에서 Git를 사용하면서 만난 git state (0) | 2023.07.18 |
[Linux]크롬(Chrome) 설치 및 삭제 (0) | 2023.07.13 |