1. volatile: cpu안에는 register들이 있고, cache도 있습니다.
compiler가 코드를 최적화 하다보면 특정 변수의 경우 caching등을
해서 속도를 올리게 되는데, 이 경우 실제 해당 변수의 값이 외부의
어떤 상황에 따라 변하게 되어도, caching된 녀석은 바뀌지 않기 때문에
이 경우 변수의 값 변화를 알아차리지 못하게 됩니다.
이것때문에 volatile을 써서 caching등의 영향에서 벗어나도록 하는 겁니다. 보통 register나, 중요한 변수를 다룰때 사용하지요.
2. static: C 책을 찾아보시면 아시겠지만(저도 오래되어서..--;) 변수를 메모리에 할당해 주는 걸겁니다. 함수 안에서 쓸때와 밖에서 쓸때가 좀 사용법이 틀리지만 내용은 같습니다. 주로 변수가 계속 특정영역에서 유지되도록 할때 사용합니다.
가끔가다 프로그래망하다보면 변수 내용이 컴파일러 문제인지 모르지만, 유지가 안되는 경우가 나옵니다. 이럴때는 static으로 해주면 해결이 되고요. 함수 내에서 사용할때는 return용 변수를 끝까지 유지할 경우에 주로 사용하고요.
그리고, static의 coverage는 자기 .c 파일내에서만 가능합니다. global 변수로 선언했을 경우.
3. const는 변경이 불가능하다고 설정을 하는 겁니다만, pc쪽에서는 잘 사용되지 않고, 주로 embedded쪽에서 많이 사용될겁니다. 이 지시자는 컴파일러에 좌우가 되는 경우가 많은데, embedded의 경우는 const변수는 flash나 rom등에 들어가도록 하는 경우가 많을겁니다.
^^
저도 대략 쓰기는 하는데, 정확한 의미는 다시 C책을 봐야할 듯 하네요.
C책본지가 십수년이 되어가니...--;, 머리만 나빠지고, 다시 공부하려고 하니 힘들고...에궁...
compiler가 코드를 최적화 하다보면 특정 변수의 경우 caching등을
해서 속도를 올리게 되는데, 이 경우 실제 해당 변수의 값이 외부의
어떤 상황에 따라 변하게 되어도, caching된 녀석은 바뀌지 않기 때문에
이 경우 변수의 값 변화를 알아차리지 못하게 됩니다.
이것때문에 volatile을 써서 caching등의 영향에서 벗어나도록 하는 겁니다. 보통 register나, 중요한 변수를 다룰때 사용하지요.
2. static: C 책을 찾아보시면 아시겠지만(저도 오래되어서..--;) 변수를 메모리에 할당해 주는 걸겁니다. 함수 안에서 쓸때와 밖에서 쓸때가 좀 사용법이 틀리지만 내용은 같습니다. 주로 변수가 계속 특정영역에서 유지되도록 할때 사용합니다.
가끔가다 프로그래망하다보면 변수 내용이 컴파일러 문제인지 모르지만, 유지가 안되는 경우가 나옵니다. 이럴때는 static으로 해주면 해결이 되고요. 함수 내에서 사용할때는 return용 변수를 끝까지 유지할 경우에 주로 사용하고요.
그리고, static의 coverage는 자기 .c 파일내에서만 가능합니다. global 변수로 선언했을 경우.
3. const는 변경이 불가능하다고 설정을 하는 겁니다만, pc쪽에서는 잘 사용되지 않고, 주로 embedded쪽에서 많이 사용될겁니다. 이 지시자는 컴파일러에 좌우가 되는 경우가 많은데, embedded의 경우는 const변수는 flash나 rom등에 들어가도록 하는 경우가 많을겁니다.
^^
저도 대략 쓰기는 하는데, 정확한 의미는 다시 C책을 봐야할 듯 하네요.
C책본지가 십수년이 되어가니...--;, 머리만 나빠지고, 다시 공부하려고 하니 힘들고...에궁...