본문 바로가기

전체 글1383

[C++구조체] #Pragma Once 사용, 헤더파일 안전하게 사용 [C++구조체] #Pragma Once 사용, 헤더파일 안전하게 사용 1. 소개 헤더 파일은 프로그램에서 사용할 요소들을 미리 선언하고 정의한 내용을 담고 있습니다. 예를 들면, Class Template의 Layout 정보는 헤더 파일에 정의되어 있고(사용할 변수, 함수 등), Implementation File들은 실제로 함수와 변수들을 구현합니다. 2. #Pragma Once, 헤더 파일 Include .h나 .hpp의 확장자의 헤더 파일은 #include로 참조할 수 있고, .cpp 파일은 헤더 파일의 선언부 정의 내용을 담습니다. 아래는 선언 예입니다. 12#include "stdafx.h"#include cs 3. 두 가지 타입의 Include와 #Pragma Once 사용할 라이브러리는 한 .. 2017. 10. 5.
[C++구조체] #Pragma pack(1) 지시어 이해하기 [C++구조체] #Pragma pack(1) 지시어 이해하기 Word Alignment(#pragma pack) Word Alignment(#pragma pack)는 어려운 개념은 아니지만, 매우 중요한 개념입니다. 우리는 하나의 word가 4바이트란 건 알고 있습니다. 메모리 주소 체계도 4바이트로 이뤄지며, 0x01ab23cd와 같은 값은 0x01, 0xab, 0x23, 0xcd로 각각 분리되어 저장되는 것도 알고 있죠. 알아야 #pragma pack도 이해할 수 있습니다. 그 저장되는 방법은 little Endian과 Big Endian으로 이 경우엔 0x01이 맨 뒤, 또는 맨 앞에 저장될 겁니다. 다소, 부정확한 의미가 될 순 있지만, 0x01이 저장된 주소가 N(1001) 번지라면 그다음 주소.. 2017. 10. 4.
비주얼스튜디오 프로젝트 파일 설명(sln, suo, user, vcproj, ncb, sdf) 비주얼스튜디오 프로젝트 파일 설명(sln, suo, user, vcproj, ncb, sdf) 프로젝트 파일들이 하는 역할 솔루션과 프로젝트를 생성하면 자동으로 생기는 몇몇 파일들에 대한 설명을 기록합니다. sln : 텍스트 파일로 한 솔루션이 관리하는 여러 프로젝트에 대한 정보를 보유, 2008과 2010이 호환되지 않으므로 반드시 변환.suo : 바이너리 파일로 여러 작업 내용, 혹은 설정(탭 위치나 창 정보) 등이 저장.user : 사용자별 설정이 저장.vcproj : visual c++ 프로젝트 파일로 프로젝트가 어떤 파일을 가졌는지에 대한 정보를 보유.ipch : 컴파일 때 여러 파일이 저장.ncb : 비주얼 스튜디오 2008에서 intellisense를 위해 저장하는 데이터베이스 파일.sdf .. 2017. 10. 3.
[C++강좌 리팩토링] 메모리 최적화, Unions 이용 [C++강좌 리팩토링] 메모리 최적화, Unions 이용 Unions 또한 리팩토링과 메모리 낭비를 막기 위해 사용할 수 있다. 데이터 멤버 중 (최소한) 하나라도 활성화되면 같은 메모리 공간에 모든 데이터 멤버가 위치하기 때문이다. union은 데이터 멤버를 모두 저장할 수 있으며, 생성자와 소멸자를 포함할 수 있다. 하지만 가상 멤버 함수를 가질 순 없다.union은 다른 클래스의 기저 클래스로써 사용될 수 없으며 다른 클래스로부터 상속할 수도 없다.union은 비자명한 특수 멤버 함수들을 가지는 객체들을 저장할 수 없다. C++에서는 익명의(anonymous) unions을 지원한다. anonymous union은 이름이 없는 객체이다. 예를 들면, 명명된 union과는 다르게 익명의 union은 .. 2017. 10. 2.