Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- stm32f 시리즈를 이용한 arm cortex-m3/m4 구조와 응용
- pyTorch
- pytorch tensor
- conda
- 공부
- Tensor
- 머신러닝
- 리눅스
- anaconda오류
- 일귀
- essential deep learning paper reading
- conda: command not found
- torch
- conda오류
- ML
- 리눅스 오류
- Ai
- Machine Learning
- 텐서
Archives
- Today
- Total
Embedded World
[C] C언어의 extern 키워드 본문
extern 키워드는 분할 컴파일 시 외부 소스코드에서 정의한 변수를 현재 소스코드에서도 사용할 수 있도록 해주는 키워드이다.
프로젝트에서 전역적으로 참조되는 구조체나, 변수, 함수를 여러 소스코드에서 공유할 때 주로 사용하는 것 같다.
재미있었던 점은, A.c에서 extern으로 외부 변수를 참조할 경우 해당 변수는 A.c에서만 사용할 수 있지만, A.c가 #include하는 헤더파일에서 extern으로 변수를 가져오면, 그 헤더파일을 포함하는 모든 소스파일에서 해당 변수에 접근할 수 있다는 점이었다.
이는 C 언어의 컴파일 과정과 관련이 있다. 전처리 단계에서 #include된 헤더파일의 내용은 해당 소스파일에 그대로 복사되기 때문에, extern 선언이 포함된 헤더파일을 참조한 모든 소스파일에서 동일한 외부 변수에 접근할 수 있게 되는 것이었다.
따라서 변수의 사용 scope를 고려해, 헤더파일에서 extern 처리를 해 주는 선택지가 있다는 점을 기억해야겠다.
C언어는 이런 복잡성이 참 매력있는 것 같다.
'소프트웨어 > C' 카테고리의 다른 글
[C] void* 포인터 (0) | 2025.08.04 |
---|---|
[C] 헤더파일에 대하여 (0) | 2025.08.02 |
[C] C의 파일시스템, fopen_s() (0) | 2025.07.24 |
[C] C언어의 조건부 컴파일 지시자(#if #ifdef #ifndef #endif) (0) | 2025.07.17 |
[C] volatile 키워드 (0) | 2025.06.23 |