일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 |
- 회계
- 함수포인터
- 필리핀
- HONEYMOON
- 책
- 사랑
- english essay
- java
- 포인터
- 사진
- generic algorithm
- 영화
- poetry
- 영어
- 시
- 안드로이드
- Joe Satriani
- 돈
- C/C++
- 프로그래밍
- Programming
- 문학
- 보라카이
- network
- 신혼여행
- STL
- English
- Android
- radar
- english presentation
- Today
- 0
- Total
- 814,152
목록Programming (30)
Humaneer.net
디버깅이 어려운 이유는 간단하다. 사람들은 자기가 보고자 하는 것만 보기때문이다. 아는 것만 보려하기 때문이다. 코드의 에러를 예측할 때는 자기가 아는 만큼 안에서 예측을 하게 된다. 고로 경험과 지식, 그리고 이 것들을 지혜로 흡수한 사람은 당연히 디버깅을 잘한다. 결론 : 무식이 죄다. ㅋ /* blah blah blah ... ... ... */ BYTE* buf = new BYTE(14); /* blah blah ... ... ... */ delete [] buf; 어제 런타임 에러가 난 버그가 포함된 코드이다. 분명히 delete [] buf; 이 구문에서 런타임 오류가 나는 걸 바로 잡아냈다. 처음엔 후~ 뻔하지 동적으로 할당한 메모리를 초과해서 내가 무슨 짓을 하였구나~. 그런데 난 절대로 ..
pgr을 돌아다니다가, 아래의 글을 발견하였다. http://www.pgr21.com/zboard4/zboard.php?id=bug&page=1&sn1=&divpage=11&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=60132 질문자가 남긴 코드는 다음과 같다. #include #include #include #include using namespace std; void main(void) { int iv[10] = {1,2,3,4,5,6,7,5,4,12}; vectorvec(iv,iv+5); vectornvec; vector::iterator iter=vec.begin(); const int val=5; while((iter=find_if(iter,..
GREAT CODE(하드웨어의 이해) 카테고리 컴퓨터/IT 지은이 랜달 하이드 (에이콘출판, 2007년) 상세보기 최근에 질러서 보고 있는 책이다. 필자가 말하고자 하는 바는 다음과 같다. HLL(High Level Language)의 컴파일러가 아무리 똑똑하더라도 H/W(혹은 컴퓨터 아키텍처)에 대한 이해도가 부족한 사람이 작성한 코드는 어찌할 수가 없다. 고로 H/W에 대해 이해를 해야 멋진 코드가 나온다. 나같이 무지한 S/W쟁이가 필수적으로 봐야할 책이 아닌가 싶다. 현재는 6장 메모리 구조와 접근이라는 챕터를 읽고 있다. 폰 노이만 아키텍처의 기본적인 컨셉과, 시스템 버스, 클럭, 메모리 구조, 접근에 관한 문제를 얕지 않으면서도 알기 쉽게 설명하고 있다. 후다닥 독파해버려야지. +_+;
눈컴파일 및 실시간 두뇌 실행을 해봅시다. 거두절미 하고 아래의 소스는 과연 실행이 잘 될까? #include using namespace std; int main() { char str2[] = "abc"; str2[0] = 'A'; cout
왜 C++ 와 C 가 함께 쓰기가 어려울까요 ? C++야 C에서 나왔으니까 당연히 두 언어는 함께 섞어 써도 아무런 문제가 없어야 되는거 아냐 ? 라고 생각하실지도 모르겠습니다. 그렇지만 C++와 C 를 섞어 쓰는 게 생각만큼 그리 쉽진 않습니다. 개선된 C로서 C++ 특징 중 하나가 함수 재정의(function override) 가 가능하다는 것이고, 이것을 처리하기 위해서는 함수 심볼명을 코드에 나온 그대로 생성하는 게 아니라 컴파일러가 조정할 필요가 있게 됩니다. 이렇게 컴파일러가 함수 심볼명을 재정의하는 것을 name mangling 이라고 하는데요, 이것 때문에 C와 C++를 섞어 쓰는게 쉽지 않습니다. 어떻게 name mangling 이루어 지는지 아래 코드를 통해 눈으로 확인해 보겠습니다. ..
#include #include void routine(int number); void display_num(int number); void display_unit(int unit); char text[1000] ={ 0, }; // 여기에 최종결과를 저장함 int main() { routine(125000); printf("%s 원", text); return 0; } void routine(int number) { int unit = 10000; int result, temp; while (unit > 0 && number > 0) { result = number / unit; temp = number % unit; if (result == 0) { unit /= 10; continue; } else..
#include int test1(int* arg) { if(arg) return *arg; else return 0; } typedef int(*ptr)(int* arg); int main() { ptr p = test1; int a = 5; printf("%d\n",p(&a)); return 0; } 종종 헷갈리는 포인터질 -_-; typedef가 들어가니 더 헷갈린다 훗~
후 -_-; 실습보드 Spec CPU : Intel 80c196kc (20MHz) ROM : Atmel 20c256 (32KB) RAM : Atmel AT29c256 (32KB) Serial Port : RS-232 Interface 통신속도 : 57600bps Homework Source Files
회사의 PC에 작은소프트 눈에뵈는 개발도구를 설치하였는데, 도대체 뭘 잘못설치한건지 툭하면 블루스크린이 뜬다. 지우고 다시 설치하여도 또 에러가 난다-_-; 회사PC라 함부로 포맷을 할 수도 없다. 그리하여 GVIM을 깔고, 각종 플러그 인을 달아 왠만한 IDE급으로 쓰려고 하였으나, 이런저런 한계를 많이 느껴서 결국 Eclipse를 사용해보기로 결심하였다. 어제 오후와 오늘 점심시간의 삽질끝에 완성한 결과물이다. ㅋㅋ 간지~! 1. MinGW를 설치한다.MinGW가 뭐하는 녀석이냐? 윈도우에서 GCC, MAKE등을 사용할 수 있게 해주는 녀석이다. 당연히 freeware이다. ㅋㅋ 검색엔진 아무 곳이나 mingw로 검색하면 쉽게 다운로드를 받을 수 있지만~ 나중에 이 포스트를 다시 보게 될 귀차니스트 ..
#include #define _PRAGMA_TEST_ // 이 줄을 주석처리 하느냐 안하느냐에 따라 결과값이 바뀐다. #ifdef _PRAGMA_TEST_ #pragmapack(push, 1) #endif typedef struct tagTest { char cChar; short sShort; int nTest; } TagTest; #ifdef _PRAGMA_TEST_ #pragma pack(pop) #endif int main() { printf("%d", sizeof(TagTest)); getchar(); return 0; } PRAGMA_TEST를 정의하면, 한마디로 pragma pack(push, 1)이 세팅되면, 바이트 처리단위가 1이 되어 구조체의 크기가 7이된다. 정의하지 않으면 32bi..