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

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


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
번호 제목 글쓴이 날짜 조회 수
788 [질문] Nand Flash Memory 인식에 관한 질문입니다. [3] 이재훈 2006-08-30 1488
787 외부영역의 Address를 배열처럼 쓸려면 어떻게 지정해야 할까요?[완... [2] 조준동 2006-08-28 932
786 aESOP 가지고놀기 라는 PDF 자료중 yaffs 관련 문의 입니다.-&gt... [1] 공경준 2006-08-28 2685
785 yaffs file의 repack???? <== 완료 [1] 박현진 2006-08-26 922
784 이솝보드를 휴대해서 다니고 싶어요 [2] 최지훈 2006-08-25 1048
783 [질문] ezjtag-aesop-r4 에 관해서 [2] 이재훈 2006-08-24 1137
782 무선랜을 올렸는데요?? <== 완료 [1] 윤현승 2006-08-23 1013
781 UDA1341TS 기능중에 녹음기능 관련 질문이요 [2] 전병환 2006-08-22 1096
780 2440 or 2413에 CF 인터페이스 구현 정보 요청 [2] 백종옥 2006-08-22 1130
779 [re] CF 규격자료와 인터페이스칩 자료 입니다 ... [1] 장석원 2006-08-23 984
» volatile 의 의미는?[완료] [2] 조준동 2006-08-20 1132
777 s3c44b0x 의 Timer 5 설정...[완료] [5] 조준동 2006-08-20 1307
776 Flash Player의 제작 [1] 백종옥 2006-08-19 985
775 2440 nandboot 관련 <== 완료 [6] 전병환 2006-08-18 1245
774 mmc 사용중 질문입니다 <==완료 [1] 박현진 2006-08-17 1285
773 [질문] u-boot 에서 USB OHCI의 지원 ? [<= 완료] [2] 김정호 2006-08-16 1210
772 [질문] 이솝보드에 삼성의 DNW(USB/Sireal 다운로더)사용하려면..? [6] 박재흥 2006-08-16 2760
771 [완료] 디바이스 드라이버에서 플래쉬 메모리에 접근하는법 [2] 오주열 2006-08-14 1299
770 [고현철님] SMDK2440A 보드 ping 문제에 관한 질문 세번째 &lt... [4] 류민희 2006-08-12 1341
769 u-boot 에서 usb 메모리스틱 읽기...<==[완료!] [3] 이율삼 2006-08-12 1856

사용자 로그인