Autonomous Lawn Mower/Embedded C
Static, extern, volatile, const
날아라용팔이
2023. 5. 11. 10:33
반응형
static
해당 파일 내에서만 사용 가능. 다른 파일에서 참조 불가
파일 내에서 전역변수로 사용한다.
extern
다른 파일에 있는 변수나 함수를 공유하기 위해서 사용한다.
참조하고자 하는 변수나 함수는 다른 파일에 선언되어 있고, extern은 사용할 파일 내에서 선언해야 함
volatile
변수가 언제 어떻게 바뀔지 모른다고 알려주기 위해서 사용한다.
컴파일러는 volatile변수를 최적화에서 제외하며, 항상 메모리에 접근 가능하도록 한다.
const
이미 정의된 값을 변경할 수 없게 만들기 위해서 사용한다.
예외)
const int i=0;
*(int*)(&i)=1;
#define은 메모리가 할당되지 않지만, const는 메모리가 할당되어 디버깅 시에 메모리 값을 확인 가능하다.
extern const volatile int a;
a가 하드웨어에 의해서 변경될 수 있지만 (volatile), 프로그램 내부에서는 값이 변경될 수 없음 (const)
반응형