C 언어 에서 volatile 키워드 의 깊이 있 는 설명

1.volatile 키 워드 는 무엇 입 니까?
volatile 은 변 수 를 설명 하 는 데 사 용 됩 니 다.컴 파일 러 에 이 변 수 는 쉽게 변 할 수 있 습 니 다.이 변 수 를 컴 파일,읽 기,저장 할 때 어떠한 최적화 도 하지 마 십시오.따라서 컴 파일 된 프로그램 은 이 변 수 를 저장 하거나 읽 어야 할 때마다 변수 주소 에서 저장 데 이 터 를 직접 읽 고 최적화 하지 않 습 니 다.우리 가 내장 형 개발 을 할 때이 키 워드 는 역할 이 매우 크다.때때로 변수 주 소 는 시스템 의 외부 주소 일 수 있 기 때문에 그의 값 변 화 는 프로그램 제어 범위 에 있 지 않 고 수시로 변화 할 수 있 기 때문에 그 에 게 성명 을 해 야 한다.매번 읽 거나 저장 할 때마다 주 소 를 직접 조작 하고 다른 중간 상 사 를 거치 지 않 고 다음 에 나 는 하나의 예 로 vilatile 의 역할 을 분석 해 야 한다.
2.GCC 최적화 등급
예 를 들 기 전에 먼저 GCC 의 최적화 개념 을 알 아 보 자.보통 C 언어의 컴 파일 러 는 GCC 컴 파일 러 를 사용 하 는데 그 는 다음 과 같은 몇 가지 등급 의 최적화 가 있다.
  • -O0:(기본 값):최적화 되 지 않 았 습 니 다
  • -O 또는-O1:최적화 하지만 너무 많은 시간 을 들 이지 마 세 요
  • -O2:더욱 적극적으로 최적화
  • -O3:가장 적극적으로 최적화
  • -Ofast:최고급 최적화
  • -OS:최적화 코드 크기
  • -Og:가능 한 한 디 버 깅 을 방해 하지 않 는 상황 에서 최적화
  • 서로 다른 최적화 등급 을 열 면 프로그램 컴 파일 후의 결 과 는 일정한 변화 가 발생 할 것 이다.한편,volatile 은 최적화 된 상황 에서 사용 하고 보호 변 수 는 최적화 되 지 않 는 다.
    3.volatile 성명 변수 테스트
    저희 가 먼저 c 프로그램 을 써 보도 록 하 겠 습 니 다.
    
    #include <stdio.h>
    int main(void)
    {
        volatile int i=0;
        i=1;
        i=2;
        i=3;
        printf("%d",i);
        return 0;
    }
    
    프로그램 은 변 수 를 만 들 고 i 에 대해 세 번 의 할당 을 합 니 다.-O 기본 최적화 등급 을 사용 하여 코드 를 컴 파일 하고 어 셈 블 리 결 과 를 볼 수 있 습 니 다.우 리 는 최적화 된 후에 i=1 과 i=2 가 최적화 되 었 고 생 성 된 어 셈 블 리 코드 가 없 으 며 마지막 값 을 가 져 와 i 에 게 할당 하 는 것 을 볼 수 있 습 니 다.

    우리 가 Volatile 성명 변 수 를 사용 하면
    
    #include <stdio.h>
    int main(void)
    {
        volatile int i=0;
        i=1;
        i=2;
        i=3;
        printf("%d",i);
        return 0;
    }
    
    다음 과 같이 컴 파일 하면 변수 i 의 모든 할당 이 어 셈 블 리 코드 를 생 성 했 고 최적화 되 지 않 았 으 며 매번 할당 할 때마다 다시 주소 지정 할당 을 할 수 있 습 니 다.

    우리 가 volatile 을 사용 하여 외부 레지스터 에 비 친 주 소 를 설명 한 후에 위 에서 연속 으로 데 이 터 를 외부 레지스터 에 전송 하면 volatile 성명 을 사용 하면 보호 명령 이 최적화 되 지 않 고 프로그램 이 정상 적 인 기능 을 실현 할 수 있 습 니 다.물론 레지스터 에 대한 보 호 를 제외 하고 volatile 은 다 중 스 레 드 간 공유 변수의 보 호 를 사용 하기 도 합 니 다.만약 에 주의 하지 않 으 면 컴 파일 러 는 변수 가 현재 함수 에서 만 사용 되 고 최적화 되 며 다른 작업 에서 진행 되 는 변 화 는 무효 가 된다 고 생각 합 니 다.만약 에 중단 중 에 상태 변 수 를 바 꾸 어 다른 함수 에 검 측 을 한다 면 volatile 를 추가 하지 않 고 성명 을 하지 않 으 면 컴 파일 러 의 최적화 로 인해 무효 가 될 수 있 습 니 다.그래서 여러분 은 상기 세 가지 상황 에서 변 수 를 사용 할 때 컴 파일 러 의 최적화 등급 과 결합 하여 고려 할 수 있 습 니 다.변 수 를 volatile 키 워드 를 설명해 야 하 는 지!!
    총결산
    C 언어 에서 volatile 키워드 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 C 언어 volatile 키워드 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기