Tech & IT 187

operator = 을 재구현할 때 참조형 반환타입을 선언할 후 있는 이유

일반적인 함수를 구현할 때 참조형 반환타입을 선언하게 되면 compiler는 warning을 발생시킨다. local var를 참조했기 때문이다. 실행시 문제가 되지 않는다 하더라도 언제 문제가 생길지 모를 일이다. operator = 을 재구현 할 때에도 마찬가지이다. data & operator + (type 어쩌고) 이런 식이 되면 warning이 발생한다. 하지만 operator = (type &)을 선언해주고 나면 이 문제가 해결이 된다. 해당 객체를 대입할 때 대입연산자인 operator = 을 사용해서 대입이 되면 참조 문제가 해결이 된다. cf. 참조 반환타입을 사용하는 이유는 실제 asm코드로 변환해서 살펴보았을 때 callee함수가 반환시에 data형을 2번 객체생성을 해서 복사하는 것을..

C++과 C가 섞여있을 경우 C 함수를 위해 extern "C" 사용

project에 cpp파일 및 c 파일이 동시에 있을 경우 c파일의 함수를 extern할 때는 extern "C"를 붙인다 이유는 cpp은 compiler에서 이름을 바꿔서 asm코드를 만든다 이유는 함수 overloading을 위해서인데 이 때문에 cpp파일에서 extern 으로 함수를 선언했을 경우에도 cpp규칙에 의해서 함수이름을 name@@YAHHHH@z등으로 바꾸게 된다. 하지만 extern "C"를 선언하게 되면 이름을 바꾸지 않고 name을 그대로 사용하기 때문에 다른 파일에 있는 c function도 사용 가능하다 mm.cpp #include extern "C" int add(int x, int y, int z, int k); int add(int x, int y) { int k = 0; ..

Layer를 다루는 C프로그래밍으로 단계별 개선

union을 이용 그안에 있는 pointer선언형으로 compiler가 자동으로 변환해주는 효과를 얻을 수 있음 http://lxr.linux.no/linux+v2.6.13/include/linux/fs.h 에서도 union사용용법을 확인할 수 있음 1단계 : #include typedef struct _sData { int num ; char str[100] ; } sData ; voidinit(sData *pm, char *pstr) ; voidadd(sData *pm, char *pstr) ; voidout(sData *pm) ; voidadd_int(sData *pm, int num) ; intnumber(sData *pm) ; voidarray(sData *pm) ; intcheck(sData ..

functor를 이용한 함수 매크로

수업 내용 1. ADS(Code Warrior , AxD Debugger) 2. H-JTAG(open되어있는 무료 JTAG프로그램(USB는 유료)) 3. ARM9 실습보드 세팅 4. ARM instruction 이해 1. JTAG 설치 (H-JTAG, H-Flash(boot rom 굽는 프로그램) 2. boot rom fusing(Firmwre boot code 넣음) 3. AxD Debugger 연결 4. DNW(Hyper terminal) serial int a = 10; // RW int b = 0 ; // ZI int c ; // ZI func() { int d = 20; //stack c ++ ; d = d + c; printf(___); // RO } ZI_LIMIT --------------..

CreateThread 와 CRT함수들과의 위험성 여부

1. CreateThread : Windows API함수이며 몇몇 몇몇 crt 함수 (malloc(), fopen(), _open(), strtok(), ctime(), or localtime() 등등)가 만들어 놓은 static data 및 static buffer를 clean up하지 못함 ExitThread에서 Thread에 생성된 static buffer를 clean up하지 못하므로 memory leak이 발생함(70~80byte) 그런데 실제로 thread-safe 여부에 대해서는 언급은 없음 thread 마다 고유의 static buffer를 생성하기 때문에 서로 침범을 하거나 critical section문제는 없을 것 같음 CreateThread은 사용하지 않기를 절대적으로 권고하지만, ..

fopen(CRT) 사용시 멀티스레드(multithread)문제?

fopen함수가 multithread가 안전한가라는 주제로 웹에서 나온 자료http://blog.naver.com/process3/20093839045 http://support.microsoft.com/kb/104641/en-us open 과 fopen 계열 함수들의 차이점과 적용시점 http://blog.naver.com/chorongu/150029828416 fopen http://msdn.microsoft.com/en-us/library/yeby3zcb.aspx // crt_fopen.c // compile with: /W3 // This program opens two files. It uses // fclose to close the first file and // _fcloseall to c..