-
반응형
소스 파일을 분리할 때 발생하는 오류
소스 코드가 길어져 연관이 깊은 함수끼리 묶어 파일을 나누어 관리하면 변경된 부분이 있는 소스코드만 다시 컴파일할 수 있어 편리
소스 코드를 분리할 때 나뉘어진 두 함수에서 동일한 전역 변수를 사용하는 경우 한쪽에서 전역 변수를 참조하지 못해 오류 발생
extern 키워드
// Sum.c int result = 0; void Sum(int data1, int data2) { result = data1 + data2; } // Main.c #include <stdio.h> void Sum(int, int); extern int result; // 전역변수로 선언되어있는 것을 참조하는 extern 예약어 void main() { Sum(5, 3); printf(“5+3 = %d\n”,result); // 전역 변수는 초기화된 구간이 없어서 0이 출력 }
extern 키워드를 사용할 때 주의할 점
// 한 프로젝트 내에 2개의 c파일 존재한다고 가정 // A.c int g_data1= 0; int g_data2= 0; int g_data3= 0; // B.c int g_data1; // A.c 파일에 같은 이름의 g_data1 전역변수가 있어 링크 오류 발생 extern int g_data2; // A.c 파일에 선언된 g_data2 전역 변수를 정상적으로 extern 참조 extern int g_data3 = 0; // A.c 파일에 있는 g_data3와 중복되었다고 오류. extern int g_data4; // A.c 파일에 선언되지 않은 전역 변수를 extern 참조했으므로 오류 발생 extern int g_data5 = 0; // 선언되지 않은 변수가 extern 참조에서 초기화를 사용했으므로, 일반 전역변수로 처리
반응형'C' 카테고리의 다른 글
static 키워드 (0) 2022.05.01 지역변수와 전역변수 (0) 2022.04.30 비트 연산자(AND, OR, XOR, NOT) (0) 2022.04.29