|
큰 의미는 없다. 주소만 알면 직접 찾아가서 물건을 전달하거나 받아오는 오토바이 택배? & > 주소연산자 가 뜨면 택배기사에게 갈 주소를 알려주고. * > 별 연산자가 뜨면 택배 기사 출발! 물건을 전달하거나 받아오는 것. 아이들에게 강의했을 때 이 비유로 설명했던게 이해하기 편한 설명이었던 것 같다. 이 이야기로 더블이 되었든 따따블 포인터까지도 걍 설명이 되니 말이다. 호스팅 연장 기념 첫글은 이상! |
|
| 뭐 팁이라고 하기엔 큰 건 아니지만 팁일 수도 있다. DDE(Dynamic Data Exchange) 를 이용하는 방법도 있지만 지원하는 에디터도 별로 없고, IAR 이 크게 지원하는 것도 없어 Command Line 방식을 사용하기로 한다. 외부 에디터 사용이란 기능이 뭐 대단한 건 아니다. 평소 코딩할 때 프로젝트 파일 트리 창에서 파일을 더블클릭 하면 자신이 사용하는 에디터를 사용하여 편집할 수 있도록 자동 실행해 준다. 편하면 쓰고 불편하면 안쓰는 기능이다. 해당 기능 설정은 다음 위치에 있다. Tools > Option > External Editor > Use External Editor 체크 > 설정사항 입력. * UltraEdit 를 사용하는 방법. UltraEdit 는 DDE 를 이용할 수 있지만 별로.......... 일단 IAR 에서 Type : Command Line Editor : UltraEdit 의 경로와 실행파일 선택. Arguments : $FILE_PATH$ * Source Insight 에서 사용하는 방법. Type : Command Line Editor : UltraEdit 의 경로와 실행파일 선택. Arguments : -i +&CUR_LINE& $FILE_PATH$ Source Insight 에서는 -i 옵션을 붙이지 않으면 새로 프로그램을 실행하여 보여준다. +$CUR_LINE$ 을 붙여야 오류 라인 추적이 가능하다. |
| 어제 저녁부터 황당했던걸 쓰고자 한다. 일단은 바쁜 관계로 포스트를 꾸준히 올리지 못한거... 내 자신에게 미안해 죽겠다. 작업 기록을 남겨야 하는데.... 일단 형변환... 타입 케스트라고도 한다. 컴파일러마다 고유의 특성이 있다. 그 중 형변환에 관련해서 약간씩 틀리다. 자동화가 잘 되어있는 Delphi 나 VC++ 의 경우 정수간의 타입 케스트는 컴파일러가 알아서 한다. 물론 100 % 는 아니다. 컴파일러라는 프로그램도 사람이 만들었으니까...... C나 C++ 의 경우 타 언어에 비해 프로그래머의 자유도가 높은 언어이다. 하지만 그 자유도가 버그를 만들어 내는 경우가 있고, 프로그래머의 의도와 다르게 움직여서 오류를 만들어내는 경우가 있는데, 어제 그걸 당했다는 것... 물론 내 실수다. C 언어 코딩에서 중요한건 컴파일러에게 확실하게 지시해야 만일의 문제도 피해갈 수 있다는 것이고, 많은 C 언어 서적에서 중요시 하는 부분이다. 물론 코딩에서 명확하게 지시한다면 그 코드를 보는 자신이나 다른이들에게도 도움이 된다. 어제 낸 버그를 간략하게 예제로 나타내 보겠다. 참고로 컴파일러는 IAR 사의 C 컴파일러 이다. unsigned short Value_A; unsigned short Value_B; unsigned long Result; Value_A = 770; Value_B = 960; Result = Value_A * Value_B / 1000; 주_ unsigned short : 2 Byte 정수형. 0 ~ 65535 까지 표현가능. 주_ unsigned logn : 4 Byte 정수형. 0 ~ 4294967295 까지 표현가능. Result 값은 18 이 나왔다. 재차 확인하고 디어셈 코드 보다가 여기저기 콜 하고 점프 하길래 퇴근했다. (-_-) 그리고 오늘 아침 출근.... 좌석 버스에서 졸았다... 눈 떴더니 내릴 정류장이더라.... 5 분만 늦게 일어났어도 안양 가있을 뻔 했다.... ( 굴비 : 900 원의 차비를 더 들여서 빠르고 편하게 갈 수 있는 강화 - 구로 - 안양 노선 강화운수 3 번 좌석 버스를 알려준 혜진이누나에게 감사를 표시한다. ) 일단 졸면서 문득 생각이 난거.... 형.변.환... 그렇다. 바보 컴파일러에게 내가 어떤 정수형을 사용할 것인지 안알려 준 것. 결국 엄하게 연산해서 범위를 넘기고 나누어주는 센스를 발휘하여 결과로 1818181818181818 한거다. 다음과 같이 수정해서 한방에 끝... unsigned short Value_B; unsigned long Result; Value_A = 770; Value_B = 960; Result = (unsigned long)Value_A * (unsigned long)Value_B / 1000; 결과 값 = 739 .... OK!!! 조심하자. 그리고 바보 컴파일러에게는 하나하나 자세히 알려주자. 명심할 것!!! |
비트 필드는 잘 사용하면 메모리를 아주 효율적으로 사용할 수 있도록 해주는 방법이다. |



