언어/C 14

move semantics

카테고리는 c++11에 해당되는 내용임. 여러 의미가 있지만 처음 이해한 것은실제 함수를 호출하는 과정에서 우리는 파라미터에 변수를 생성하고 사용하게 된다.이 때, 일반적인 파라미터는 지역변수를 생성하고 값-복사를 하게되고이것을 막기위해서는 const를 사용하여 불필요한 작업을 줄일 수 있다.(복사 생성자가 호출되지 않음) 하지만 생성자를 통한 값 이동은 어쩔수 없이 내부적으로 복사 생성자가 불려져야 한다.이 경우는 사실상 불필요하기 때문에 이것을 최적화하는 방법이 있다.컴파일러에서 최적화를 지원하거나 c++11부터 지원하는 move semantics를 사용하는 것이다. move semantics는 rvalue reference를 인자로 받는 새로운 생성자로파라미터에 &&를 작성하면 된다.이동 생성자(m..

언어/C 2015.11.25

c에서 pointer와 swap의 관계

c에서는 주로 call-by-reference로 data swap을 한다.하지만, 2가지 방법을 생각할 수 있다.첫 번째는 value의 직접교환을 통한 data swap이고두 번째는 value's address의 교환을 통한 data swap이다. 이것을 왜 알아보는가? doublepointer를 사용하면 call-by-function을 이해하기 쉽기 때문이다. #include void DoublePointer(int **a, int **b){int *c; c = *a;*a = *b;*b = c;}void AddressSwap(int *a, int *b){int c; c = *a;*a = *b;*b = c;}void main(){int a = 3, b = 5;int *pa = &a, *pb = &b; p..

언어/C 2015.06.28

MFC Image Viewer

MFC 프로젝트 생성 리소스 뷰에서 MAINFRAME에 열기항목에 event를 추가한다. OnFileOpen()에 아래와 같이 작성 // Get image file nameCFileDialog dlg(TRUE, _T("BMP|CPP"), NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT, _T("Image Files (BMP,JPEG,JPG,JPE,JPG...)|*.BMP;*.JPEG;*.JPG;*.JPE;*.PGM|"));if( IDOK != dlg.DoModal() )return;//저는 std::string을 많이 사용해서 이방법을 씁니다. CString은 권장하지 않습니다.CString sFilename = dlg.GetPathName..

언어/C 2015.02.09

file 복사 프로그램

> inPath와 outPath를 입력하면 inPath의 디렉토리 file들을 outPath로 복사한다.> 수정해서 사용하셔도 됩니다. /* 2015. 01. 30 by Garuya * Copy File To other Directory */ #include #include #include #include int copy(char *src, char *dst); int select_copy(char *src, char *dst); typedef struct _finddata_t FILE_SEARCH; #define BUFFER_SIZE 4096 //optinal x86 buffer size int main() { char c_case; int error_code = 0; //default char inP..

언어/C 2015.01.30

파일명 변경

복구된 파일명이 깨진 관계로파일명을 디카 포맷 (IMG_~ 또는 KN2A~) 변경이 필요했다.c로 간단히 프로그램 만들었다. 그 외에도 텍스트 파일 일괄 변경에 쓰일 수 있다. /* 2015.01.12 keicoon15 * 파일 이름 일괄변경 프로그램 */ #define _CRT_SECURE_NO_DEPRECATE #include // 일반적인 function #include // 문자열 비교 #include // mkdir, rename #include // doChange() void doChange(int type, char* path); // 구조체 재정의 typedef struct _finddata_t FILE_SEARCH; // 현재 경로 얻을 때 #ifndef _MAX_PATH #define..

언어/C 2015.01.12