기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

전역으로 변수를 선언하는데....


volatile int gb_test;


int gb_test;


두개의 차이는 무엇일까요?


사전적 의미는 휘발성의...


static


const  등도 갑자기 의문이 생기는 군요..


그냥 막연하게 ... 그러겠지라고 쓰긴쓰는데  설명이 안됩니다.



고현철

2006.08.20 22:03:19
*.232.213.201

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책본지가 십수년이 되어가니...--;, 머리만 나빠지고, 다시 공부하려고 하니 힘들고...에궁...

조준동

2006.08.21 18:09:47
*.61.128.11

감사합니다.

volatile 의 의미를 이제 알겠군요....

처음에는 모두 volatile 로 선언하면 될것 같았는데...

volatile의 남용도 좋지는 않군요.... ^^
List of Articles
번호 제목 글쓴이 날짜sort 조회 수
6228 Flash Player의 제작 [1] 백종옥 2006-08-19 985
6227 s3c44b0x 의 Timer 5 설정...[완료] [5] 조준동 2006-08-20 1307
» volatile 의 의미는?[완료] [2] 조준동 2006-08-20 1132
6225 2440 or 2413에 CF 인터페이스 구현 정보 요청 [2] 백종옥 2006-08-22 1130
6224 UDA1341TS 기능중에 녹음기능 관련 질문이요 [2] 전병환 2006-08-22 1096
6223 [re] CF 규격자료와 인터페이스칩 자료 입니다 ... [1] 장석원 2006-08-23 984
6222 무선랜을 올렸는데요?? <== 완료 [1] 윤현승 2006-08-23 1013
6221 [질문] ezjtag-aesop-r4 에 관해서 [2] 이재훈 2006-08-24 1137
6220 이솝보드를 휴대해서 다니고 싶어요 [2] 최지훈 2006-08-25 1048
6219 yaffs file의 repack???? <== 완료 [1] 박현진 2006-08-26 922
6218 aESOP 가지고놀기 라는 PDF 자료중 yaffs 관련 문의 입니다.-&gt... [1] 공경준 2006-08-28 2685
6217 외부영역의 Address를 배열처럼 쓸려면 어떻게 지정해야 할까요?[완... [2] 조준동 2006-08-28 932
6216 [질문] Nand Flash Memory 인식에 관한 질문입니다. [3] 이재훈 2006-08-30 1488
6215 제 2410보드 동작 시험결과입니다. ^^ [1] 한지훈 2006-09-01 1191
6214 [질문] u-boot에서 2440 USB OHCI의 성능 <= 완료 [4] 김정호 2006-09-01 1535
6213 삼바 linking 문제 입니다.<==완료 [1] 윤현승 2006-09-02 971
6212 nand flash bad eraseblock 납니다....[미해결] [2] 오용석 2006-09-02 1282
6211 [질문] cannot execute "/etc/rc.d/rc.S" 에 관한 질문입니다. [3] 이재훈 2006-09-05 1164
6210 바이너리파일을 아스키파일로 변환하는걸 도와주세요 ... [8] 장석원 2006-09-09 1611
6209 [질문] kill 에 관해서.. 느닷없이 궁금해서요. [2] 이재훈 2006-09-12 1059

사용자 로그인