(보충) 최신 gcc에서의 선언문 차이

블로그에 작성중인 c의 경우에는 지금 최신의 주분투와 최신 버전의 gcc를 이용하고 있다. 그러나 작성하는 내용은 이전에 규링이 직접 c를 배울 때 쓰던 책 자료도 참고로 하고 있다. 그러다 보면 요즘과는 차이가 좀 나는 부분이 있는데, 이번에 자료를 만들면서 겪었다.

변수 선언을 할 때, 한번에 특정 변수를 동일한 값으로 취급하여 선언하는 경우가 있다. 이전에 작성한 산술 연산자 글에서의 두번째 예시에 보면 a,b,c,d 네 변수를 차례차례 선언한 수에 c=d=2를 작성하여 c,d를 한번에 2로 지정하였다.%e1%84%89%e1%85%b3%e1%84%8f%e1%85%b3%e1%84%85%e1%85%b5%e1%86%ab%e1%84%89%e1%85%a3%e1%86%ba-2017-02-15-%e1%84%8b%e1%85%a9%e1%84%92%e1%85%ae-4-20-34

근데 c를 오래전부터 짜왔던 분들은 그냥 선언할 때 저 두번째 문장을 확 넣어버리도록 배웠다. 그리고 그 때에는 그대로 했어도 오류가 나지 않았다. 그게 아래에 있는 예시이다.

%e1%84%89%e1%85%b3%e1%84%8f%e1%85%b3%e1%84%85%e1%85%b5%e1%86%ab%e1%84%89%e1%85%a3%e1%86%ba-2017-02-15-%e1%84%8b%e1%85%a9%e1%84%92%e1%85%ae-4-18-35

근데 지금은 이렇게 하면 오류를 낸다.

%e1%84%89%e1%85%b3%e1%84%8f%e1%85%b3%e1%84%85%e1%85%b5%e1%86%ab%e1%84%89%e1%85%a3%e1%86%ba-2017-02-15-%e1%84%8b%e1%85%a9%e1%84%92%e1%85%ae-4-18-50

오류 문장을 보면 d가 선언되지 않았다고 한다. 이게 문제될 것이 뭐냐면서 하는 분들이 있는데, 요즘에는 컴파일러들이 이걸 문제삼는다. 선언을 먼저 함으로써 메모리 할당을 보호하려는 정책인 듯 하다. 자세한 건 찾아봐야 할텐데…;;

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다