C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[14664] 변수에 대한 책을 읽다 생각나 써 봤습니다.
나무 [go12cu] 3102 읽음    2008-06-16 23:03
/********************** volatile***************************/
//정부는 예전부터 쇠고기 협상에 대해 아래와 같은 program을 작성했다.
#include <counterparty.h>
#include <expert.h>
#include <ustr.h>

void WaitCowImport(int);

int cowImport;
void main(void)
{
        ;
        ;
}
// 그리고 다음과 같이 함수를 코딩했다.

void WaitCowImport(int cowImport)
{
    cowImport =1;
    while ( cowImport == 1)
    {   
        ;
        ;
        ;
    }
}

//정해진 대로라면 쇠고기는 어쨌던 수입하는 것이었다.
//지금은 야당인 전 정부에서도 FTA함수 때문에 반대하지 않을 것이었다.
//전문가들의 의견으로는 사라지는 질병이라는 의견을 내놓았던 것이다.
//미국무역대표부는 쇠고기 변수를 1로 하지 않으면 FTA함수에
//EOF가 전해질 것이라고 했다.
//따라서 쇠고기 변수는 대통령이 1이라고 정했고 정한 이상 바뀌지 않을 것이었다.
//그래서 정부라는 컴파일러는 프로그램의 속도를 높이기 위해 다음과 같이 최적화했다.
    cowImport =1;
    while ( 1 == 1) ImportFunc();

//급기야는 더욱 최적화해서 다음과 같이 해버렸다.
    cowImport =1;
    while ( 1 ) ImportFunc();

// 그런데 국민이라는 인터럽트에 의해 정부라는 프로그램 밖에서
//쇠고기 변수값이 0으로 바뀌었다.
    cowImport = 0;

//그러나 이미 최적화가 이루어져 정부라는 프로그램은 프로그램내에서
//함수 실행을 바꿀 수 없는 상황이 되었다.
    while ( 1)ImportFunc();

//위 함수는 cowImport 변수가 아무리 0이어도 무조건 실행되는 것이 된 것이다.

//쇠고기 변수는 volatile을 선언하지 않아서 최적화의 폐해를 입은 것이다.
//쇠고기 변수는 최적화하면 안되는데 최적화한 것이다.
//따라서 대통령은 쇠고기 변수를 다음과 같이 선언했어야한다.
volatile int cowImport;

//이것의 뜻-변수 cowImport는 제어할 수 없는 곳에서 시시각각 값이 변할
//가능성이 있는 변수이므로 cowImport에 관한 최적화는 실행하지
//않길 바람.

+ -

관련 글 리스트
14664 변수에 대한 책을 읽다 생각나 써 봤습니다. 나무 3102 2008/06/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.