2012-08-01 5 views
4

Windows 시스템이 아닌 임베디드 시스템에서 작업합니다.임베디드 시스템 C의 재부팅 후 정적 재정의

나는 선언

static uint_8 i = 0; 

그래서 나는 시작 순간에 0을 정의한다.

질문 : 재설정 후 0으로 다시 정의되거나 램 주소에서 정크 정보를 얻습니까? 예를 들어 i를 0으로 재정의하려면 init 함수를 작성해야합니까?

감사

답변

3

이 (있는 경우) 런타임 라이브러리에 따라 달라집니다. 기존 런타임 라이브러리가있는 경우 시작시 (이전) 정적 데이터를 0으로 초기화합니다. 그러나 일부 임베디드 시스템에는 완전한 런타임 라이브러리 지원이 없을 수도 있으므로 직접 수행해야 할 수도 있습니다.

+0

나를 바보처럼 보이게 해주셔서 감사합니다! 나는 "우리는 런타임 라이브러리를 가지고 있습니까? 정적 라이브러리를 재정의해야합니다"라고 물었습니다. 그리고 우리 시스템에는이 라이브러리가 없습니다. 이제 init 함수를 작성하려고합니다! – Thomas

+0

위대한, 재미있게 들립니다. 거기 있었어! :) –

0

아니요, 아닙니다. 모든 정적 변수는 프로그램 시작시 0으로 초기화됩니다.

C 표준 ISO/IEC 9899 : TC2는 다음과 같은 방식으로이를 정의합니다. 객체 식별자
또는 스토리지 클래스 지정자 정적 외부 또는 내부 링키지 선언 정적 저장 기간을 가진 개체의

6.2.4 보관 기간. 그것의 수명은 프로그램의 전체 실행 이며 저장된 값은 프로그램 시작 전에 한 번만 으로 초기화됩니다.

+0

그다지 중요하지 않습니다. – Thomas

+0

맞아, 그렉이 아주 좋은 지적이야. –