CS/공통
Visual Studio 한글 사용 시 오류 발생
1. 오류가 발생하는 코드 Visual Studio 2017의 최신 업데이트를 받고 아래와 같이 소스에서 한글 코드를 사용하면 오류가 발생한다. 이 오류는 소스 파일의 인코딩 옵션 때문에 발생하는 것이라서 인코딩 옵션만 수정해주면 문제를 해결할 수 있다. 2. 한글 관련 오류를 수정하는 방법 소스 파일의 인코딩 옵션을 수정하려면 아래와 같이 '파일' 메뉴의 '다른 이름으로 ... 저장'을 선택하여 '다른 이름으로 파일 저장' 대화 상자를 실행시켜야 된다. '다른 이름으로 파일 저장' 대화 상자가 화면에 나타나면 '저장' 버튼 옆에 있는 화살표를 선택하여 '인코딩하여 저장'을 선택한다. '인코딩하여 저장'을 선택하면 아래와 같이 확인창이 나오는데 '예'를 눌러서 진행하면 된다. 그러면 아래와 같이 '고급 ..
Overflow (오버플로우)
오버플로우(overflow)의 의미 - 각 데이터타입은 자료형에 맞는 저장의 최대/최소 범위가 존재한다. int number; 라고 선언하자. number는 변수의 이름이며 그 앞에 있는 int는 변수의 타입이다. int형 자료형은 4바이트의 정수형 타입으로 음수를 고려하고 있기 때문에 number가 저장할 수 있는 최대값은 2의31승-1이고, 이 값은 곧 2147483647 이다. (약 21억) 따라서 number 변수에는 약 21억까지 저장이 가능하다. 그런데 만일 코드에서 number 변수에 저 최대 숫자 이상을 넣는다면 어떻게 될까? 이와 같이 저장할 수 있는 최대범위를 넘어설때 이를 "오버플로우(overflow)" 라고 부른다. 오버플로우(overflow)의 법칙 - number의 최대저장가능값..
프로젝트의 총 코드 라인 수를 확인하는 방법 (SourceMonitor)
우선 SourceMonitor을 다운로드 한다. 맨 하단 굴림으로 되어있는게 최신 버전이다. 다운로드가 다 끝났다면 File > New Project를 클릭한 후 프로젝트에 맞는 언어를 설정한다. 그 다음 프로젝트 파일 명칭이랑 경로를 설정한다. 여기서 All Subdirectories를 선택한다 즉 하위 폴더까지 다 추가한다는 뜻. 3개 다 체크한다 공백 문자, 중복된 헤더파일 등을 미포함 시킨다. New SourceMonitor project format을 선택한 후 Use this format when saving all projects를 체크한다. 한글이 있을 수도 있으니 UTF-8 파싱을 허용한다. 결과는 아래와 같다. Baseline 우클릭 또는 Views 탭 통해서 띄울 수가 있다.
64bit OS에서 C++과 C# 데이터 차이 비교
CTS C++ C# Size(byte) System.Byte unsigned char byte 1 System.SByte signed char sbyte 1 System.Int16 short short 2 System.UInt16 unsigned short ushort 2 System.Int32 int int 4 System.Int64 long, long long long 8 System.Single float float 4 System.Char wchar_t char 2 System.Double double double 8 System.UInt64 size_t ulong 8 System.IntPtr void * (pointer) IntPtr 8 출처 : https://dragontory.tistory...
비쥬얼 스튜디오 프로젝트명 변경하는 방법
.sln 파일을 메모장에 옮긴 후 색칠한 곳을 본인이 변경하고자 하는 프로젝트 명으로 변경하기, .vcxproj 확장명 유지. P.S. 폴더명과 참조하는 헤더/라이브러리 파일이 있다면 디렉터리도 바꿔줘야 한다.
DirectX 11 LNK2019 에러 해결 방법
Unresolved external symbol __vsnprintf .... (in dxerr.lib) #pragma comment(lib, "legacy_stdio_definitions.lib") d3dUtil.h 헤더파일 내 HR 매크로 오류 #pragma comment(lib, "dxerr.lib") #pragma comment(lib, "D3DX11.lib")
OOP
OOP란?? (Object Oriented Programming) C++는 객체지향 언어이고 해당 언어를 OOP라고 부르며 Object Oriented Programming의 약자다. 컴퓨터 프로그래밍 패러다임 중 하나로, 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. Class (클래스) / Object (객체) Abstraction (추상화) Encapsulation (캡슐화) Inheritance (상속성) Polymorphism (다형성) 장점 코드 재사용이 용이 (남이 만든 클래스를 가져와서 이용할 수 있고 상속을 통해 확장해서 사용할 수 있다.) 유지보수가 쉬움 (절차 지향 프로그래밍에서..
응집도 - 결합도 (Cohesion - Coupling) 개념
응집도는 모듈 내부에 존재하는 구성 요소들 사이의 밀접한 정도를 나타낸다. 즉 하나의 모듈 안에서 구성 요소들 간에 똘똘 뭉쳐 있는 정도. 응집도가 높을수록 구성 요소들이 꼭 필요한 것들로만 모여 있고, 낮을수록 서로 관련성이 적은 요소들이 모여 있다. 응집도 종류이러한 응집도는 아래와 같이 다양한 기준으로 모듈을 구성할 수 있고 그에 따라 응집도와 품질이 달라진다.기능적 응집도 : 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우.순차적 응집도 : 모듈 내의 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우.교환적 응집도 : 동일한 입력과 출력을 사용하여 서로 다른 긴으을 수행하는 구성 요소들이 모여 있을 경우.절차적 응집도 : 모듈이 다수의 관련 기능을..
dxerr.lib(dxerrw.obj) : error LNK2019 해결방법
dxerr.lib(dxerrw.obj) : error LNK2019: __vsnwprintf 외부 기호(참조 위치: "long __stdcall StringVPrintfWorkerW(unsigned short *,unsigned int,unsigned int *,unsigned short const *,char *)" (?StringVPrintfWorkerW@@YGJPAGIPAIPBGPAD@Z) 함수)에서 확인하지 못했습니다. #pragma comment(lib, "legacy_stdio_definitions.lib") 포함
객체지향 - SOLID 개발 5대 원리
S - SRP(Single responsibility principle) 단일 책임 원칙 - 모든 클래스는 단 하나의 책임을 가져야한다. O - OCP(Open Closed Principle) 개방 - 폐쇄 원칙 - 확장에 대해서는 개방 되어 있어야 하지만, 수정에 대해서는 폐쇄 되어야 한다. L - LSP(liskov substitusion Principle) 리스코프 치환 법칙 - 문제 없이 업캐스팅(Up-Casting, 부모의 객체로 자식의 객체를 가르킬 수 있는 것)이 되야한다. I - ISP(Interface Segregation Principle) 인터페이스 분리 원칙 - 자신이 이용하지 않는 클래스를 의존하지 않아도 된다 혹은 아예 의존시키지 말아야한다. D - DIP(Dependency I..