reinterpret_cast 에 대해..

icanfly의 이미지

어제 서점에서 C++ 기초 플러스 4판을 보면서 캐스팅연산자 부분을 보는데 reinterpret_cast 에 대해 좀 나와있어서 유심해 봤었습니다.

정확히 기억아진 않지만... 대충 다음과 같은 코드를 보여주면서, 시스템 종속적인 코드를 만들어낸다고, 약간은 어거지 스러운 캐스팅을 할때 쓰는 놈이라는 식으로 기술이 되있더군요.

struct two_short
{
	short a;
	short b;
};

int main()
{
	struct two_short st_two_short;
                long c = reinterpret_cast<long>(st_two_short);
}

집에와서 대충 기억나는데로 하고 컴파일을 시켜보니 mingw에서는 컴파일이
되지 않는군요.

예전에 윈소켓 루틴을 작성하면서 다자간 접속을 구현할때, long형에 다가 포인터를 담아서 전달한적이 있는데 그때 받는쪽에서 reinterpret_cast를 써서 다시 포인터로 캐스팅해서 잘 동작한적이 있었습니다. win32 환경이라면 위와같은 캐스팅이 크게 문제 될거같지는 않은데.확신은 못하겠네요...고수님들의 조언 기다리겠습니다.

markboy의 이미지

reinterpret_cast<> 는 pointer to pointer, pointer to integer, integer to pointer 시에 사용 합니다.

icanfly의 이미지

win32에서 long = int 이므로...제가 사용한 방법은 적법했다고 볼수있겠군요.
답변 감사드립니다.

실제로 별문제도 없었고요..

그럼...

mastercho의 이미지

reinterpret_cast는 C 언어의 (자료형*) 이런식의 케스팅을 할떄와 비슷하다고 보시면 됩니다

한마디로 -_-; 포인터형과 데이터 크기가 같다면 무조건(?) 케스팅 되게끔 하는것이죠

markboy님 말씀대로 형이 다른 포인터끼리 케스팅할떄 주로 쓰입니다

승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.