0xe0000300은 단순한 상수라서 컴파일러가 어떠한 타입의 변수인지를 인식 못 할 수가 있습니다. 뭐 보통은 그렇진 않겠지만요...
그런고로 (u32 *)을 안 붙였을 경우엔 u32 *ptr이란 변수에 0xe0000300이란 단순한 숫자를 대입하게 되므로 타입 미스매칭으로 컴파일시 Warning, 심하면 Error가 발생하게 됩니다.
따라서 u32 *타입의 ptr이란 변수에 u32 *타입의 0xe0000300을 대입한다는 것을 컴파일러에게 알리기 위해 (u32 *) 타입 캐스팅을 붙인 것입니다.
보통 그냥 0x3000뭐 이런식으로 쓰면 그냥 단순히
보통 그냥 0x3000뭐 이런식으로 쓰면 그냥 단순히 16진수 값이라고 볼 수 있는데,
위의 경우는 포인터를 의미하는 경우 이므로 0xE00003000이 주소값이라는 것을 명시하기 위해서 케스팅 연산자를 사용한거라고 보시면 됩니다.
(u32 *)는 케스팅 연산자라고 보시면 되요.
0xe0000300은 단순한 상수라서 그렇습니다.
0xe0000300은 단순한 상수라서 컴파일러가 어떠한 타입의 변수인지를 인식 못 할 수가 있습니다. 뭐 보통은 그렇진 않겠지만요...
그런고로 (u32 *)을 안 붙였을 경우엔 u32 *ptr이란 변수에 0xe0000300이란 단순한 숫자를 대입하게 되므로 타입 미스매칭으로 컴파일시 Warning, 심하면 Error가 발생하게 됩니다.
따라서 u32 *타입의 ptr이란 변수에 u32 *타입의 0xe0000300을 대입한다는 것을 컴파일러에게 알리기 위해 (u32 *) 타입 캐스팅을 붙인 것입니다.
나의 모든 생명은 단 한 명의 소녀를 위하여.
댓글 달기