본문 바로가기

Programming/C & C++

(19)
Visual Studio 2019 & Visual Assist - 버그 VA가 활성화 되어 있을 경우 Visual studio 의 intellisense의 상태가 메롱메롱이 되어버린다. 가-끔 VA를 비활성화 했다가 다시 활성화 할 경우 VA가 없는 상태의 intellisense를 사용하는 것처럼 Ctrl + Enter 로도 선택이 되는 경우가 있지만 킁. Whole Tomato 측에서도 해당 버그에 대해 인지는 하고 있으나 아직까지 뭐가 문제다 라고 확답이 나온것이 없다. - 2019의 신기능인 IncrediBuild를 비활성화 하면 문제가 해결된다. 라는 말이 있으나 어디까지나 케바케인듯. 해당 버그에 대한 글 https://forums.wholetomato.com/forum/topic.asp?TOPIC_ID=16802 https://forums.wholetomato.c..
Visual Studio - C4996 '###' : This Function or varible may be unsafe. 첫번째 있는 C4996 에러가 __declspec 키워드의 문법 중 하나인 deprecated 를 통해서 만들어진 에러이고, 밑에 있는 두 개의 에러는 안전하지 않은 라이브러리의 함수를 이용함에 따라 뜨는 에러다. #pragma warning(disable : 4996)를 통해서 __declspec( deprecated( MESSAGE ) ) 키워드에 의해 생성된 에러는 무시가 가능하지만 wscanf 와 scanf 등 안전하지 않은 라이브러리를 사용하는 부분은 #pragma warning(disable : 4996)로는 되지 않는다. 해결법 1. wscanf는 wscanf_s를, scanf 는 scanf_s를 사용한다. (사실상 이게 제일 편하긴 하다) 2. "Project -> Properties ->..
Visual Studio - #pragma once, #ifndef, PCH 차이 #pragma once와 #ifndef 와 pch 세가지 다 중복으로 헤더 파일을 읽지 않도록 하는 것들이다 ( #pragma once 는 지시자, #ifndef 는 전처리기 지시문, pch는.. 컴파일러 옵션? ) 하나의 헤더파일을 여러 파일에서 include 할 경우 충돌이 나거나, 느려지는 경우가 있다. 이런 경우를 막기 위해서 위의 3가지 방법을 사용한다. 먼저 #pragma once의 사용법을 간단히 설명하자면 // PragmaOnce.h #pragma once #include #include #include #include #include #include .... #pragma once는 컴파일러 전처리기 지시자로 한번 인식한 후 다음에는 어느 파일에서 include 해도 읽지 않고 바로 패스..
Visual Studio - E2924 PCH warning E2924 PCH warning: header stop cannot be in a macro or #if block. An IntelliSense PCH file was not generated. 이 에러는 해결방법이 생각보다 쉽다. PCH, 즉 미리 컴파일된 헤더(Precompiled Header) 가 매크로 혹은 #if 등의 블럭 내부에 있다는 뜻으로 해당 블럭 위쪽이나 아래쪽, 즉 외부로 빼내면 된다. (아니면 미리 컴파일된 헤더를 사용하지 않는다거나..)
Visual Studio 버전 가져오기 C++ 로 개발을 하다보면 많이 사용하는 키워드, 기본 라이브러리( STL )이 있다. 요즘 나오는 Visual Studio 버전은 C++ 11 이상으로 지원하기 때문에 크게 상관이 없지만 C++ 11 미만의 버전에서는 대표적인 std::function 이나, 몇몇의 키워드들이 우리가 흔히 알고 있는 방식과는 다르게 작동하거나 아예 없는 경우가 있다. (예를 들어 final 키워드 같은 경우..) 일반적인 경우, VS 버전을 바꿔가면서 개발을 하는 경우가 없지만, 지금의 나처럼 C++ 11을 지원하는 버전( VS 2012 이상의 버전 )과 지원하지 않는 버전 ( VS 2005 )을 오고가면서 코딩을 하고 있는 경우 또한, 빌드 단계에서 예기치 못한 충돌( 지금 나는 stdafx.h 충돌을 겪고 있다) 이..
Visual Studio 2017 - E1696 cannot open source file "###" Classes \ A \ A.cpp 에서 미리 컴파일된 stdafx.h를 열 수 없다고 에러가 뜬다. (근데 빌드하면 빌드는 잘된다) 사실상 거의 warning이랑 다를바가 없긴하다. 문제는 없는데 성가신 거.. 그렇다고 #include "../stdafx.h"를 하면 각설하고, 프로젝스 속성 ▶ C / C++ ▶ 일반 ▶ 추가 포함 디렉터리에 $(ProjectDir)[#stdafx.h 위치]를 추가하면 된다. ( 아니면 프로젝트의 풀 경로를 입력해도 된다 )
Visual Studio 2005 TaskList 토큰 추가 적용이 안 될 때 토큰 이름 입력 후 추가를 하고, 확인을 눌렀음에도 Visual studio를 껐다 켰을 때 적용이 안된다면 ( VS 2005 기준 ) 내문서 - Visual Studio 2005 - Settings 에서 현재 적용중인 셋팅 파일을 열어서 TODO:2 HACK:2 UNDONE:2 UnresolvedMergeConflict:3 CommentToken 항목을 찾아서 원하는 내용을 추가하면 된다. ※ 토큰의 총 갯수는 ArrayElementCount의 값과 동일해야한다. ex) TODO:2 HACK:2 UNDONE:2 UnresolvedMergeConflict:3 WTF:3 TEST:3 TEMP:3 토큰 이름 : 우선순위 우선순위는 3(! 높음), 2(보통), 1(↓ 낮음) 순이다.
텍스트에서 입력 받은 단어의 개수 찾기 Header #include #include #include #include #include using namespace std; class SearchWord { public: SearchWord(); SearchWord( wstring, wstring ); ~SearchWord(); private: vector vBool; wstring txt = L""; wstring word = L""; size_t szWord = 0; int nWordIndex = 0; int nTxtIndex = 0; int nSearchCount = 0; private: bool check(); public: int isEqaul(); public: int getCount(){ return this->nSearchCount..