본문 바로가기

프로그래밍

C++11 람다식 정리(lamda) [my_mod](int v_)->int{return v_ % my_mod;} //클로져 (Closure) 객체라고 명명 [] : 아무것도 캡처하지 않음 [&x] : x만 Capture by reference [x] : x만 Capture by value [&] : 모든 외부 변수를 Capture by reference [=] : 모든 외부 변수를 Capture by value [x, y] : x, y 를 Capture by value [&x, y] : x는 Capture by reference, y는 Capture by value [&x, &y] : x, y 를 Capture by reference [&, y] : y 를 제외한 모든 값을 Capture by reference [=, &x] : x 를 제.. 더보기
Visual C++ 데이터 형식(범위) 형식 이름바이트기타 이름값의 범위int4signed–2,147,483,648 ~ 2,147,483,647unsigned int4unsigned0 ~ 4,294,967,295__int81char-128 ~ 127unsigned __int81unsigned char0 ~ 255__int162short, short int 및 signed short int–32,768 ~ 32,767unsigned __int162unsigned short, unsigned short int0 ~ 65,535__int324signed, signed int 및 int–2,147,483,648 ~ 2,147,483,647unsigned __int324unsigned, unsigned int0 ~ 4,294,967,295__int64.. 더보기
Visual Studio 전체프로그램 최적화 vs 최적화 옵션중에 전체프로그램 최적화라는 것이 있다. 한 모듈을 빌드할 때 코드생성을 끝내는 것이 아니라 최종 링크될 때 까지 코드생성을 지연시켜서 최적화 된 빌드를 하는 옵션이다. 이 옵션이 켜지면 각 모듈의 중간파일(obj,lib) 파일의 사이즈가 매우 커지게 된다. 그리고 링크 시간이 더 늘어나고 빌드하는 모듈이 너무 클 경우 빌드가 되지 않는다. LNK1257 같은 에러가 뜨는데 해결방법은 옵션을 켜지 않거나 모듈생성파일을 작게 쪼개야 한다. https://msdn.microsoft.com/ko-kr/library/czw890e0(v=vs.90).aspx 더보기
매크로(define) 재정의 충돌문제 해결 Windows 8.0 SDK and DirectX SDK 가 충돌하여 몇몇 매크로가 충돌하는 경우가 생겼다. 보통 DX_SDK가 오래된 버전일때 이러한 경우가 생기는데, 여기에서 해결방법은 여러가지 방법이 있는데 다음과 같다. 1. DX_SDK를 include에서 제거 2. DX_SDK의 몇몇 old 함수를 사용하고 있다면, 프로젝트 세팅을 다음과 같이 변경project settings -> "General" -> "Platform Toolset"to "Visual Studio 2012 - Windows XP (v110_xp)" 3. 중복정의가 특별히 문제가 없다면 c4005 를 경고 무시에 추가 #include using namespace std; #define TEST "test1"#define TE.. 더보기
C++11 enum class 다음은 C++11 에서 강화된 enum 기능이다. 1. 중복 정의 가능 enum Car{SONATA,AVANTE,}; enum FakeCar{SONATA,AVANTE,}; 재정의로 에러가 난다. 하지만, class 한정자를 붙여주면? enum class Car{SONATA,AVANTE,}; enum class FakeCar{SONATA,AVANTE,}; 깔끔하게 컴파일 된다. 2. 타입 강화 enum Car : unsigned int{SONATA = 1,AVANTE = 2,}; enum FakeCar : unsigned int{SONATA2= 1,AVANTE2 = 2,}; if( Car::AVANTE == FakeCar::SONATA2 ){// 기존과 마찬가지로 컴파일 가능} 하지만, 위와 마찬가지로 c.. 더보기
Visual Studio 2015 마이그레이션(migration) VS 마이그레이션 작업은 프로젝트마다 천자만별이기 때문에 어떤 정형화된 가이드를 안내하기 보다는 경험담으로 봐야 할 것 같다. 여기에서 소개하는 작업은 현재 개발툴중 하나를 vs2005 -> vs2015 의 마이그레이션이다. 참고로 MFC와 DX_SDK를 기반으로 만들어져 있으며 기타 Boost와 같은 외부 라이브러리도 여러개 포함되어 있다. 확실한건 외부 라이브러리가 많이 포함되어 있을수록 마이그레이션 작업이 어렵다. 풀소스가 아닌 정적라이브러인 경우, 해당 라이브러리만 최신 버전을 다운받거나 재빌드 해야하는 경우가 생길 수 있다. Visual Studio 마이그레이션 작업의 경우, 크게 다음과 같이 나눌 수 있을 것 같다. 먼저 상위버전에 호환되는 C++ 표준 변경에 따른 문법 수정 그리고 현재 윈도.. 더보기
Visual C++ 프로젝트 파일들 File extensionTypeContents.asmxSourceDeployment file..aspSourceActive Server Page file..atpProjectApplication template project file..bmp, .dib, .gif, .jpg, .jpe, .pngResourceGeneral image files..bscCompilingThe browser code file..cpp; .cSourceMain source code files for your application..curResourceCursor bitmap graphic file..dbpProjectDatabase project file..discoSourceThe dynamic discovery docum.. 더보기
VisualStudio 에서 참조카운터를 사용해보자 C# 프로그래밍을 하다가 정말 편리한 기능이라고 생각했던 참조카운터에 대해 소개해 본다. 바로 이런식으로 코드 바로위에 참조하고 있는 갯수를 표시해 주는 기능인데, 실시간으로 보여준다. 코드가 많을 경우, 뜨는 속도가 느릴때도 있지만 기다릴만한 수준이다. 물론, 디폴트 옵션이기 때문에 기본적으로 켜져 있다., 나는 지저분해서 못봐주겠다고 한다면, 도구->옵션->텍스트 편집기->모든 언어->Codelens 에서 셋팅하면 된다.(VS2013이상일 경우) 참고로 C++은 Codelens가 부분적으로만 지원이 된다. C# 같은 경우 코드 전체를 파악하는 반면에 C++의 경우 컴파일을 하지 않으면 파일간의 연계를 알 수 어렵기 때문이라고 생각이 된다. 따라서 참조표시 부분이 비활성화 된다. 덴장!! 더보기
C++11 Visual Studio 기능지원 목록 한동안 C#보다는 C++ 자료를 더 포스팅 할 것 같다. 암튼 여기서는 획기적(?)이라 할 수 있는 C++11 에 대한 지원목록을 표시해 본다. 어차피 msdn에 있는거지만 나중에 조금 더 편하게 찾아볼 수 있게 그냥 정리하는 용도 VS2010 부터 부분적으로 지원을 하며 2015이상을 사용해야 대부분의 기능을 지원한다. C++11 핵심 언어 기능Visual Studio 2010Visual Studio 2012Visual Studio 2013Visual Studio 2015Rvalue 참조 v0.1, v1.0, v2.0, v2.1, v3.0v2.0v2.1*v2.1*v3.0ref-qualifiers아니요아니요아니요예비정적 데이터 멤버 이니셜라이저아니요아니요예예Variadic 템플릿 v0.9, v1.0아니요.. 더보기
Visual Studio 2010 Tools for Unity https://visualstudiogallery.msdn.microsoft.com/6e536faa-ce73-494a-a746-6a14753015f1 더보기