local 변수로 static을 잡고 initial값을 function에서 받게하면 왜 처음에만 갱신될까요?
글쓴이: lvheart / 작성시간: 화, 2011/05/03 - 3:25오후
제목처럼 아래와 같습니다.
int funcA(void)
{
static int a = getStatus();
printf("%d", a);
}
위와 같은 때 a값은 funcA가 호출될때마다 getStatus()의 값을 읽어올까요?
ADS라는 arm compiler(정확히는 armcc)는 c만 지원되서 컴파일자체가 안되고,
visual studio 2003에서는 a값이 최초에만 입력되고 변경이 되지 않습니다.
local에 잡힌 static 변수 초기화이므로 결과를 봤을때 맞을 수 있다라고 생각되지만
함수를 입력받는거라서 똑똑한 컴파일러면 funcA가 호출될때마다 getStatus()값이
변경되면 변경될 줄 알았는데, visual studio나 codepad.org에서도 안되네요.
Forums:
원래 그렇습니다.
int funcA(void)
{
static int a;
a = getStatus();
printf("%d", a);
}
로 하시면 되겠네요.
그런데 굳이 이 용도라면 static 키워드를 쓸 이유가 없어보이네요. ~~
댓글 달기