C 언어 에서 extern 상세 용법 해석
1.extern 수식 변수의 성명.
예 를 들 어 파일 a.c 가 b.c 의 변수 int v 를 인용 해 야 한다 면 a.c 에서 extern int v 를 설명 한 다음 에 변수 v 를 참조 할 수 있 습 니 다.다른 모듈 에서 extern 수정자 로 인 용 될 수 있 는 변 수 는 보통 전역 변수 입 니 다.그리고 중요 한 것 은 extern int v 는 a.c 의 어느 곳 에 나 놓 을 수 있다 는 것 이다.예 를 들 어 a.c 의 함수 fun 정의 의 시작 부분 에서 extern int v 를 설명 한 다음 에 변수 v 를 인용 할 수 있다.다만 이것 은 함수 fun 역할 영역 에서 만 v 를 인용 할 수 있 을 뿐이다.이것 은 변수 역할 영역의 문제 이다.그런 점 에서 많은 사람들 이 사용 할 때 걱정 을 한다.extern 성명 은 파일 역할 영역 에 만 사용 할 수 있 는 것 같 습 니 다.
2.extern 수식 함수 성명.본질 적 으로 볼 때 변수 와 함 수 는 차이 가 없다.함수 명 은 함수 바 이 너 리 블록 의 시작 부분 을 가리 키 는 지침 입 니 다.만약 파일 a.c 가 b.c 의 함 수 를 인용 해 야 한다 면,예 를 들 어 b.c 에서 원형 이 int fun(int mu)이 라면 a.c 에서 extern int fun(int mu)을 설명 한 다음 에 fun 을 사용 하여 모든 일 을 할 수 있 습 니 다.변수의 성명 처럼 extern int fun(int mu)은 a.c 의 파일 역할 영역 범위 에 두 지 않 아 도 됩 니 다.다른 모듈 의 함수 에 대한 인용 은 이 함수 성명 을 포함 하 는 헤더 파일 을 가장 많이 사용 합 니 다.
extern 과 헤더 파일 을 포함 하여 함 수 를 인용 하 는 것 은 어떤 차이 가 있 습 니까?extern 의 인용 방식 은 헤더 파일 을 포함 하 는 것 보다 훨씬 간결 합 니 다!extern 의 사용 방법 은 직접적 이 고 적당 하 며,어떤 함 수 를 인용 하고 싶 으 면 extern 으로 어떤 함 수 를 설명 합 니 다.이것 은 아마도 KISS 원칙 의 구현 일 것 입 니 다!이렇게 하 는 뚜렷 한 장점 은 프로그램의 컴 파일(정확히 말 하면 예비 처리)과정 을 가속 화하 고 시간 을 절약 하 는 것 이다.대형 C 프로그램 컴 파일 과정 에서 이런 차 이 는 매우 뚜렷 하 다.
3.그 밖 에 extern 수식 자 는 C 또는 C++함수 의 호출 규범 을 표시 하 는 데 사용 할 수 있 습 니 다.
예 를 들 어 C++에서 C 라 이브 러 리 함 수 를 호출 하려 면 C++프로그램 에서 extern"C"로 인용 할 함 수 를 설명해 야 합 니 다.이것 은 링크 기 에 사용 되 는 것 으로 링크 기 가 링크 할 때 C 함수 규범 으로 연결 하 는 것 을 알려 줍 니 다.주요 원인 은 C++C 프로그램 컴 파일 이 완 료 된 후에 대상 코드 에서 이름 을 짓 는 규칙 이 다 르 기 때문이다.
4.간단 한 예 를 들 어:
C 언어 로 프로그램 을 작성 할 때 우 리 는 항상 이러한 상황 을 만 날 수 있 습 니 다.헤더 파일 에 전역 변 수 를 정의 한 다음 에 두 개의 서로 다른 c 파일 에 포함 시 키 고 이 전역 변 수 를 두 파일 에서 공유 하 기 를 바 랍 니 다.
예 를 들 어 프로젝트 폴 더 procject 에는 main.c,comon.c,comon.h 세 개의 파일 이 있 는데 그 중에서
common.h 파일 은 각각\#include 는 main.c 와 common.c 파일 에 있 습 니 다.현재 main.c 와 comon.c 에서 사용 할 문자 변수 key 를 설명 하고 싶 습 니 다.다음 그림 에서 보 듯 이:
두 파일 을 모두 사용 하고 싶다 면 common.h 에서 unsigned char key 를 설명 하고 관 계 를 포함 하기 때문에 main.c 와 common.c 에서 모두 볼 수 있 기 때문에 공유 할 수 있 을 것 이 라 고 생각 합 니 다.
이런 생각 은 사실 많은 초보 자 들 이 생각 하 는 것 이다.생각해 보면 확실히 일리 가 있다.그러나 실제로 써 보면 우 리 는 컴 파일 할 때 컴 파일 러 의 알림 이 잘못 되 었 다 는 것 을 알 게 되 었 다.일반적인 힌트 는 대략 Error:L6200E:Symbol key multiply defined(by common.o and main.o)와 유사 하 다.즉,컴 파일 러 는 우리 가 key 라 는 변 수 를 반복 적 으로 정의 했다 고 생각한다.이것 은\#include 명령 은 원래 다른 헤더 파일 의 내용 을\#include 의 위치 로 옮 기 는 것 이기 때문에 main.c 와 common.c 에서 모두 unsigned char key 를 한 번 실행 한 것 과 같 습 니 다.C 언어 에서 전체 변 수 는 프로젝트 내(또는 프로젝트 내 라 고 함)에서 볼 수 있 습 니 다.그러면 하나의 프로젝트 에서 두 개의 변수 key 를 만 들 었 고 컴 파일 러 는 중복 정의 라 고 생각 합 니 다.
정확 한 해결 방법:extern 키 워드 를 사용 하여 변 수 를 외부 변수 로 설명 합 니 다.구체 적 으로 말 하면 그 중의 c 파일 에서 전역 변수 키 를 정의 한 다음 에 키 라 는 변 수 를 사용 할 c 파일 에서 extern 키 워드 를 사용 하여 한 번 설명 합 니 다.이 변 수 는 외부 변수 이 고 다른 c 파일 에서 정의 할 전역 변수 임 을 설명 합 니 다.정의 와 성명예 를 들 어 main.c 파일 에서 변수 키 를 정의 하고 common.c 파일 에서 키 변 수 를 외부 변수 로 설명 하면 이 두 파일 에서 이 변수 키 를 공유 할 수 있 습 니 다.코드 는 다음 과 같 습 니 다.
(1)main.c 파일
#include “common.h”
unsigned char key;
(2)common.c 파일
#include "common.h"
extern unsigned char key;
5.실제 실행 예:상황:한 프로젝트 에 a.c and b.c 파일 이 두 개 있 는데 그 내용 은 다음 과 같 습 니 다.
a.c:
#include <stdio.h>
int i = 3;
int p(void) {
printf("%d
",i);
return 0;
}
b.c:
#include <stdlib.h>
extern int p(void);
extern int i;
int main() {
p();
system("pause");
return 0;
}
b.c 에서 a.c 에서 정 의 된 변수 와 함 수 를 호출 하고 마지막 으로 Dev C+에서 실 행 됩 니 다.b.c 의 출력 결 과 는:3 입 니 다.C 언어 에서 extern 의 상세 한 용법 해석 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 C 언어 에서 extern 의 용법 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.