자료형이 메모리에 어떻게 저장되는지 정확히 아는 경우라면 그렇게 해도 안전할거같긴 하네요..
long int??
long int g_memory
난 옛날에 풀다운 메뉴구현할때 메뉴 스트링 뒤에다 함수포인터도 집어 넣어서 그냥 문자열 끝 다음을 실행하게 했었음. ㅋㅋ 까이꺼 구현하는 사람 마음이지. ( 그당시 컴파일러는 리터럴 영역에 쓰기 되었음 )
long int 가 몇 바이트인데? : )
int* first = reinforced_cast <int*> (g_memory)
롱인트가 32비트에선 4바이트 64비트에선 8 바이트
ㅋㅋ 표준은 long long 이야. ( 64비트 )
넴 그냥 long 이라구도 쓰구요
그래서 상수 쓸때두 ~~~~LL 처럼 해서 long long 을 표현하지
long long 말구요 ㅋㅋ long이요
그냥 L 리터럴로
long int 이렇겐 잘 안쓴단 말.
음 reinforced cast 를 써야겠군
다른 더 효율적인 방법이 안떠오르네여
https://msdn.microsoft.com/ko-kr/library/s3f49ktz.aspx
long long 쓰세요.
배열을 포인터로 캐스팅해서 쓰는건 별로 시비 안걸텐데~ 어떻게 쓰겠다는건지 잘 안와닿네~
전 long 쓰고싶다니깐용 ㅜㅜ
long long 말그
위에 "전역에 long int" 라고 본문에 적어둬서 하는 말이지.
Msdn 주신 링크에서도 보면 long의 다른형태를 long int 라고 쓰여져있고 저도 long을 쓰고 싶었던건데용
http://ideone.com/vHEHc9
이걸 하고 싶었던것 아냐?
ㅋㅋ 의도를 추측해서 말씀하셨군요. 제가 쓰려는 목적은 그게 맞는데
그냥 위에서 예시로 든거에서 말하고 싶었던건 long int였어요.
64비트 자료형을 32비트 포인터로 접근하고 싶단 말인줄 알았지.
그리고 지금 생각중인건 int**로도 캐스팅 하나 하면 좋을꺼 같단부분이 있는데 rainforced cast는 될 수 있는 한 쓰지 말라는 말이 저에게 고민을 안겨주네욧
그러니까 이건 표현의 비유일성 문제인데, 16/32비트에서 long int 가 int 고 64비트에서 long long 이 64비트 인데,
long int 는 16비트의 잔재 같은 표현이야. 32/64비트에선 그냥 int 하면 되는거구.
64비트가 필요하면 long long 이면 되는지라, long int 는 암묵적으로 안쓴단 말이야.
16/32 비트에선 long int 가 32비트 int 였거든.
한가지 대상을 표현하는 여러가지 표현법이 있을때 간단한걸 선택하는게 권장되고, 그걸 정규화 ( normalize ) 라고 하지
그 말은 이해라는데 제가 본문에서 예시로 든 long int가 의미하고자 하는 바가 long long이 아니어서
그리고 reinterpret_cast 를 이야기 하고 싶었던것 아냐?
제가 계속 아니라고 한건데 음 .. int**로 케스팅하는건 어떻게 생각하세요??
네 long long g_memory[100]
응? 그럼 본문에 예시로 든건 int 나 long 이었겠지. ( 32비트 )
int** 라면 주소를 두 번 따라가겠단 말인데 그런 용도야?
&g_memory[ 0 ] 는 g_memory 자체야.
int* a = (int*)g_memory 하면 &g_memory[0] 를 넘기는거랑 같음.
잠시만요 누워서 자려고 머리 쿨다운하다가 지금 회전중
T** first = reinterpret_cast<T**>(&g_memory[0]);
참고해. 아직 포인터 연산 표현이 간결하게 정리가 안된듯.
T* iteratorPointer = (주소값)
first = &iteratorPointer;
**first = value;
T**first = (T**)g_memory; 이렇게 해도 되긴 해. 근데 니가 두 번 de-reference 할 일이 있을까?
아녀아녀 ㅜㅜ 누워서 있다가 방금 다시 앉아서 제대로 쳤어요
포인터의 배열형태로 long long 배열을 바꾸고 싶은거죠
어차피 8바이트니까
이게 퀵소트 부분 최적화하는데 swap을 한번 줄일 수 있겠더라구요.
그런데 reinterpret_cast 라고해도 이렇게 쓰는경우는 좀 폭력적인거 같다는 느낌을 받아서 궁금했던거죠
음 일단 써도 괜찮다는 말씀이시군요!
알고 쓰면 상관없는데, C style 캐스팅을 하는것 보다 권장된다 뿐이고, 관련없는것들을 캐스팅할 수 있으니 지양하라는건데...
내가 보기엔 니가 ** 를 선언할 이유가... 별로 없을 것 같아.
예제 소스코드를 올려주면 내가 다듬어주지.
저 지금 뇌 번개처럼 돌아가서
몇시간안에 쓱싹해서 쓱싹끝내드림 이벤트
ㅋㅋㅋㅋㅋㅋ 자고 일어나셔서 비밀글확인 해주세요.
웅 확인은 할께 ㅋㅋ
자료형이 메모리에 어떻게 저장되는지 정확히 아는 경우라면 그렇게 해도 안전할거같긴 하네요..
long int??
long int g_memory
난 옛날에 풀다운 메뉴구현할때 메뉴 스트링 뒤에다 함수포인터도 집어 넣어서 그냥 문자열 끝 다음을 실행하게 했었음. ㅋㅋ 까이꺼 구현하는 사람 마음이지. ( 그당시 컴파일러는 리터럴 영역에 쓰기 되었음 )
long int 가 몇 바이트인데? : )
int* first = reinforced_cast <int*> (g_memory)
롱인트가 32비트에선 4바이트 64비트에선 8 바이트
ㅋㅋ 표준은 long long 이야. ( 64비트 )
넴 그냥 long 이라구도 쓰구요
그래서 상수 쓸때두 ~~~~LL 처럼 해서 long long 을 표현하지
long long 말구요 ㅋㅋ long이요
그냥 L 리터럴로
long int 이렇겐 잘 안쓴단 말.
음 reinforced cast 를 써야겠군
다른 더 효율적인 방법이 안떠오르네여
https://msdn.microsoft.com/ko-kr/library/s3f49ktz.aspx
long long 쓰세요.
배열을 포인터로 캐스팅해서 쓰는건 별로 시비 안걸텐데~ 어떻게 쓰겠다는건지 잘 안와닿네~
전 long 쓰고싶다니깐용 ㅜㅜ
long long 말그
위에 "전역에 long int" 라고 본문에 적어둬서 하는 말이지.
Msdn 주신 링크에서도 보면 long의 다른형태를 long int 라고 쓰여져있고 저도 long을 쓰고 싶었던건데용
http://ideone.com/vHEHc9
이걸 하고 싶었던것 아냐?
ㅋㅋ 의도를 추측해서 말씀하셨군요. 제가 쓰려는 목적은 그게 맞는데
그냥 위에서 예시로 든거에서 말하고 싶었던건 long int였어요.
64비트 자료형을 32비트 포인터로 접근하고 싶단 말인줄 알았지.
그리고 지금 생각중인건 int**로도 캐스팅 하나 하면 좋을꺼 같단부분이 있는데 rainforced cast는 될 수 있는 한 쓰지 말라는 말이 저에게 고민을 안겨주네욧
그러니까 이건 표현의 비유일성 문제인데, 16/32비트에서 long int 가 int 고 64비트에서 long long 이 64비트 인데,
long int 는 16비트의 잔재 같은 표현이야. 32/64비트에선 그냥 int 하면 되는거구.
64비트가 필요하면 long long 이면 되는지라, long int 는 암묵적으로 안쓴단 말이야.
16/32 비트에선 long int 가 32비트 int 였거든.
한가지 대상을 표현하는 여러가지 표현법이 있을때 간단한걸 선택하는게 권장되고, 그걸 정규화 ( normalize ) 라고 하지
그 말은 이해라는데 제가 본문에서 예시로 든 long int가 의미하고자 하는 바가 long long이 아니어서
그리고 reinterpret_cast 를 이야기 하고 싶었던것 아냐?
제가 계속 아니라고 한건데 음 .. int**로 케스팅하는건 어떻게 생각하세요??
네 long long g_memory[100]
응? 그럼 본문에 예시로 든건 int 나 long 이었겠지. ( 32비트 )
int** 라면 주소를 두 번 따라가겠단 말인데 그런 용도야?
&g_memory[ 0 ] 는 g_memory 자체야.
int* a = (int*)g_memory 하면 &g_memory[0] 를 넘기는거랑 같음.
잠시만요 누워서 자려고 머리 쿨다운하다가 지금 회전중
http://ideone.com/vHEHc9
T** first = reinterpret_cast<T**>(&g_memory[0]);
참고해. 아직 포인터 연산 표현이 간결하게 정리가 안된듯.
T* iteratorPointer = (주소값)
first = &iteratorPointer;
**first = value;
T**first = (T**)g_memory; 이렇게 해도 되긴 해. 근데 니가 두 번 de-reference 할 일이 있을까?
아녀아녀 ㅜㅜ 누워서 있다가 방금 다시 앉아서 제대로 쳤어요
포인터의 배열형태로 long long 배열을 바꾸고 싶은거죠
어차피 8바이트니까
이게 퀵소트 부분 최적화하는데 swap을 한번 줄일 수 있겠더라구요.
그런데 reinterpret_cast 라고해도 이렇게 쓰는경우는 좀 폭력적인거 같다는 느낌을 받아서 궁금했던거죠
음 일단 써도 괜찮다는 말씀이시군요!
알고 쓰면 상관없는데, C style 캐스팅을 하는것 보다 권장된다 뿐이고, 관련없는것들을 캐스팅할 수 있으니 지양하라는건데...
내가 보기엔 니가 ** 를 선언할 이유가... 별로 없을 것 같아.
예제 소스코드를 올려주면 내가 다듬어주지.
저 지금 뇌 번개처럼 돌아가서
몇시간안에 쓱싹해서 쓱싹끝내드림 이벤트
ㅋㅋㅋㅋㅋㅋ 자고 일어나셔서 비밀글확인 해주세요.
웅 확인은 할께 ㅋㅋ