본문 바로가기

Programming/Tips(C++,C#)142

VS2015에서 _filelength(FILE*->_file)이 빌드 안됨 VS2015로 기록하였지만, 정확하게는 C++에서 FILE구조체(_iobuf)의 멤버였던 _file이 제거된것 같다.FILE구조체의 멤버는 _Placeholder 이거 하나만 남아있는데. 정확하게 무엇을 하는지는 확실하지 않다.FILE구조체의 멤버들이 다 제거된것 같은데, 이에 맞추어.. 각자 필요한 것들을 만들어야 할듯..나야 왜 그랬는지는 모르지만.. 파일 길이를 재려고 아래와 같이 구문을 작성했었다. 파일크기= _filelength(FILE*개체->_file); 더이상 위 구문은 컴파일이 안되므로, 아래와 같이 변경 #include std::ifstream files(파일명, std::ifstream::ate | std::ifstream::binary);파일크기 = files.tellg(); 위와 .. 2016. 6. 7.
막상 생각하면 잘 생각나지 않는 new vs malloc 1. malloc vs new malloc은 free와 같이 사용하고, new는 delete와 같이 사용한다. 안한다고 해서 컴파일 오류가 나진 않는다. 다만 메모리가 좀 새는거밖에 더있나... ㅋㅋ (물론 진짜로 그렇게 코딩하면 '밥은 먹고 다니냐?'라는 질문을 받으실 수 있습니다.) - 공통점 : heap영역에 메모리를 생성한다. - 차이점 1) malloc/free는 객체의 생성자/소멸자를 호출해 주지 않는다. new/delete는 호출하여 준다. C++에서는 new/delete를 사용하는것이 좋다. 객체에다가 malloc/free를 해주면 Runtime Error!라는 친숙한 창을 만날 수 있다. 2) malloc/free는 라이브러리 제공 함수이고 할당하는 크기를 지정할 수 있다. new/del.. 2015. 11. 18.
변환연산자 operator returntype() 연산자 오버로딩에서 보면.. class A{ ... operator classB* (){ blabal.. } ... }; 이런 선언이 있다. 검색해보니, 변환연산자 오버로딩. 해당 클래스가 B로 형 변환이 될 때의 연산자를 오버로딩하는것이라고.. 2014. 11. 20.
자동화와 이중 인터페이스 1. 자동화 - VB나 ASP같은 스크립트기반 언어에서는 COM객체의 인터페이스에 직접 접근할 수 없다. 하지만 자동화를 통해 COM객체를 사용할 수 있다. 자동화를 통하면 마샬링을 위한 프록시/스텁 구현도 필요가 없다. 하지만, 자동화의 단점은 수행속도, 사용가능한 데이터형의 제한이 있다. 이를 위해 MS에서는 자동화와 기존의 커스텀 인터페이스를 모두 지원하는 이중 인터페이스를 제안함. 2. IDispatch인터페이스 - IUnknown에서 파생됨. GetTypeInfoCount, GetTypeInfo, GetIDsOfNames, Invoke등의 4개의 메소드가 있다. - 다음 VB의 예 dim obj As Object set obj = CreateObject(ProgID) obj.Prop = prop.. 2014. 11. 12.
Chapter 08. ATL윈도우 클래스와 WTL 8.1 ATL윈도우 클래스 참조링크 : http://devnote.tistory.com/63 8.1.1 ATL윈도우클래스 개요 - ATL에서는 윈도우 조작을 위해 윈도우 클래스를 제공한다. (최상위는 CWindow 클래스) 8.1.2 윈도우 애플리케이션 - 윈도우 프로그램을 구성하면 WinMain과 윈도우 프로시저로 구성됨. -> 프로그램의 진입은 WinMain(). 메인 윈도우를 생성하면 메시지 루프에 들어오는 메시지는 윈도우 프로시저로 전달된다. 8.1.3 CWindowImpl클래스. - CWindow에서 파생되어, 윈도우의 생성 및 클래스등록, 메시지 처리등의 기능을 제공. (CWindow만 사용하면 클래스등록과 메시지처리는 직접 구현해야 함) - CWindowImple< class T, class.. 2014. 11. 11.
Chapter 07. ATL개요 7.1 ATL의 특징 - COM컴포넌트를 빠르게 구현할 수 있도록, IUnknown, IClassFactory등의 인터페이스에 대한 코드가 구현되어 있음 7.1.1 ATL의 장점 - 작고 빠르고 확장성을 갖는 COM컴포넌트를 만들어 줌. - 템플릿은 코드에서 사용하여 타입이 명확할 때, 컴파일러가 코드를 만들어 준다. 즉, 사용안되는 경우 해당 템플릿은 코드에 포함되지 않는다. 그리고 ATL에서는 IUnknown등의 구현이 지원되어 편리하다. 7.1.2 ~ 7.1.3 ATL프로젝트 만들기, ATL COM객체 추가 - Visual Studio에서 ATL프로젝트를 만들면 '$(프로젝트명)PS'의 프로젝트가 하나 추가되어있다. 이는, 프록시/스텁을 VS에서 만들어주었다. 또한 DllRegister/Unregi.. 2014. 11. 10.
728x90