Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[5846] Re:volatile 변수의 void 포인터 캐스팅
남병철.레조 [lezo] 3185 읽음    2006-11-04 11:46
궂이 적어보자면...
컴파일러 구현 정책?의 차이입니다.
자동 타입 캐스팅이 지원되는 범위는 표준이 있다 하더라도 구현하는 밴더에 따라 다르기에...
하드웨어 관련으로는 많이 쓰는지 몰라도 전 volatile 자체를 쓸 기회가 별로 없네요... -,-;
하지만 MSDN에서 설명한 대로라면... 재밌는 기능이네요. 얼마나 잘 될 지는 몰라도;;



권기식.with☆ 님이 쓰신 글 :
: 안녕하세요.
:
: avr-gcc로 마이크로 컨트롤러 프로그램을 짜다가 생긴 의문점인데 c 공통 사항인 것 같아 질문 드립니다.
:
: 예를 들어서...
:
: volatile char str[10];
:
: 이라고 변수를 선언했고.. 함수내에서 이를 0으로 초기화하기 위해 memset 함수를 사용했습니다.
:
: memset(str, 0, 10);
:
: 이렇게 하면 avr-gcc 컴파일러에서는 "passing argument 1 of 'memset' discards qualifiers from pointer target type" 이라는 경고 메시지를 띄우고 실행에는 문제가 없습니다.
:
: 이를 다시 Borland C++(Builder 2006)에서 컴파일해보니 volatile char *를 void *로 변환할 수 없다며 Error가 나네요.
:
: volatile... 단순히 생각할 키워드가 아닌 것 같네요.
:
: 어찌하여 이런 에러가 나며...
:
: memset((void *)str, 0, 10); 로 void * 형으로 캐스팅해서 쓰니 에러가 없어지는데 정상적인 해결책인지 궁금합니다.
:
: 포인터... 알면 알수록 어렵네요.. ^^
:
:
: ps. 같은 맥락으로 한 가지 더 적어봅니다.
:
: volatile로 선언된 변수의 경우 이를 인자로 넘겨받는 함수의 인자를 volatile로 선언하니 경고가 뜨지 않는군요.
:
: 자료를 좀 찾아보니 volatile char와 char는 서로 다른 데이터 형이라서 그렇다는군요.

+ -

관련 글 리스트
5839 volatile 변수의 void 포인터 캐스팅 권기식.with☆ 5688 2006/10/25
5859     Re:volatile 변수의 void 포인터 캐스팅 라스코니 4079 2006/11/08
5971         Re:Re:volatile 변수의 void 포인터 캐스팅 서영섭 5638 2007/03/31
5861         Re:Re:volatile 변수의 void 포인터 캐스팅 권기식.with☆ 3912 2006/11/08
5846     Re:volatile 변수의 void 포인터 캐스팅 남병철.레조 3185 2006/11/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.