본문 바로가기

Programming/C&C++

boost 컴파일 에러 fatal error C1001 출처 : http://kjk92.tistory.com/35 visual studio 2013 deepllearning caffe를 사용하려고 환경을 구축하는 중 boost(1.63버전) 컴파일시 fatal error C1001 : 컴파일러에서 내부 오류가 발생했습니다. 에러 내역boost\type_traits\common_type.hpp(42): fatal error C1001: 컴파일러에서 내부 오류가 발생했습니다. (※ 해결후 포스팅 하는 데 스크린샷을 미리 찍지 못했습니다ㅠㅠ) - 환경구축 중이 아닌 다른 상황으로 타 블로그에서 개발 중 C1001 발생하면 다시 빌드를 하면 된다 고도 합니다.(비쥬얼을 종료후 -> 솔루션 다시빌드를 말하는거 같습니다.) 출처에서 보니 visual 2013이 최신 버.. 더보기
STL Queue 사용법 1. 전처리#includeusing namespace std; 2. 선언queue Queue; 3. 삽입값을 삽입한다. Queue.push(데이터); 4. 참조가장 먼저 추가된 데이터를 가져온다. 변수 = Queue.front(); 5. 삭제가장 먼저 추가된 데이터를 삭제한다.Queue.pop(); 6. 갯수큐가 가지는 항목의 수를 가져온다. 변수 = Queue.size(); 7. 확인큐가 비어 있는지 검사한다.false : 큐에 항목이 있음.true : 큐에 항목이 없음. #include queue Q //Q라는 이름의 int 요소들로 구성된 큐 선언Q.push(값) //큐 Q에 값을 넣는다. 리턴 값이 없다.Q.pop() //큐 Q의 front를 삭제한다. 리턴 값이 없다.Q.front() //큐 Q.. 더보기
[C++] inet_addr, htons 함수 출처: http://yongho1037.tistory.com/516 [게임 서버 개발 노트] 우리가 흔히 쓰는 IP주소는 255.255.255.0 형태의 32bit 주소(IPv4)를 사용한다. 이것은 우리가 알아보기 쉬운 형태의 표기 방법이고winsock에서 IP 저장방식은 32bit unsigned long integer 타입이다.이 unsigned long integer의 구성은 '.'당 8bit씩 4개의 값을 왼쪽에서 오른쪽으로 배열한다.예를 들면 255.255.255.0은 0xFF.0xFF.0xFF.0이다.이를 왼쪽에서 오른쪽으로 배열하면 0xFFFFFF00이 된다.문자열 형태의 IP주소 값을 이렇게 unsigned long 타입의 값으로 변환해 주는 것이 inet_addr 함수 이다. 예제 소스.. 더보기
현재 시간 millisecond(밀리세컨드)까지 가져오기 출처 : http://albiones.tistory.com/entry/%ED%98%84%EC%9E%AC-%EC%8B%9C%EA%B0%84-miliseconde%EB%B0%80%EB%A6%AC%EC%84%B8%EC%BB%A8%EB%93%9C%EA%B9%8C%EC%A7%80-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0 현재 시간을 millisecond까지 가져오기 위해서는 다음과 같이 사용하면 된다. 12345SYSTEMTIME cur_time;GetLocalTime(&cur_time); CString strTime;strTime.Format("[%02d:%02d:%02d.%03d]",cur_time.wHour, cur_time.wMinute, cur_time.wSecond, cur_t.. 더보기
C++ string 정리 (C++ 문자열) 출처 : http://makerj.tistory.com/127 C++ string 정리 (C++ 문자열)C++11 환경에서 정리한 글입니다 또한 using namespace std를 한 상태임을 밝힙니다이 글을 통해 std::string을 간략하게 정리한다.C++ string 정리 (C++ 문자열)string 생성방법1방법2string 확장, 문자열 추가방법1: += 연산자 이용방법2: append() 멤버 함수 이용string 길이메모리 관련capacity()max_size()string의 특정 위치 문자 받기(charAt)string에 있는 특정 문자 탐색string간의 문자열 복사string간의 문자열 비교string의 문자열 대체하기 (replace기능)Immutable ReplaceMutable.. 더보기
VS2013 멀티바이트(MultiByte) 설정 사용하기 위한 준비단계 출처 : http://intra97.tistory.com/240 VS2013에서 MBCS(Multi-Byte Character Set)로 설정된 MFC 프로젝트를 컴파일하면 다음과 같은 에러 발생한다.error MSB8031: Building an MFC project for a non-Unicode character set is deprecated. You must change the project property to Unicode or download an additional library. See http://go.microsoft.com/fwlink/p/?LinkId=286820 for more information. C:\Program Files (x86)\MSBuild\Microsoft.Cp.. 더보기
CMake로 프로젝트 생성 후 프로젝트 INSTALL Error 출처 : http://egloos.zum.com/g0mug0mu/v/6146556 Error102error MSB3073: The command "setlocal"C:\Program Files (x86)\CMake\bin\cmake.exe" -DBUILD_TYPE=Debug -P cmake_install.cmakeif %errorlevel% neq 0 goto :cmEnd:cmEndendlocal & call :cmErrorLevel %errorlevel% & goto :cmDone:cmErrorLevelexit /b %1:cmDoneif %errorlevel% neq 0 goto :VCEnd:VCEnd" exited with code 1.C:\Program Files (x86)\MSBuild\Micro.. 더보기
C++ 싱글톤 패턴 출처 : http://egloos.zum.com/Lansi/v/4165048 싱글톤 패턴이란 인스턴스 생성을 단 하나만 생성하도록 제한하는 패턴을 말합니다. 인스턴스를 하나밖에 생성을 못 한다면 클래스가 무용지물이 될 수 있다고 생각할 수도 있습니다. 싱글톤 패턴은 나름대로 사용해야 할 곳이 있고, 장점이 있기 때문에 많이 쓰이고 있습니다. 예를들어, 데이터 관리 클래스가 있다고 할 때 그 데이터를 여러 클래스에서 써야하는데 데이터를 모두 공용으로 써야할 때 쓰입니다. 원리는 포인터를 하나 선언해주고 포인터가 NULL일 때 정적으로 인스턴스를 한 번만 생성해줍니다. 그리고 그걸 포인터에 넣어놓고 리턴 해주는 겁니다. 그 리턴값으로 정적으로 생성된 단 하나의 인스턴스에 접근해 사용하는거죠. 중요한 점은 정.. 더보기
Visual Studio 2013 폴딩 접기/펴기 단축키 CTRL + M + O will collapse all.CTRL + M + L will expand all. (in VS 2013 - Toggle All outlining)CTRL + M + P will expand all and disable outlining.CTRL + M + M will collapse/expand the current section.These options are also in the context menu under Outlining.Right click in editor -> Outlining to find all options. (After disabling outlining, use same steps to enable outlinging.) 출처: http://iamad.. 더보기
debug <=> release 모드의 차이점과 배포 출처 : http://jiny2097.blog.me/30043517038 릴리즈 모드 (프로그램을 배포하기 위해 컴파일 하는 모드) - 초기화 하지 않습니다. - 같은 문자열 상수라도 서로 다른 공간에 할당됩니다. - 디버깅정보를 삽입하지 않고 코드를 최적화하여 실행 파일 크기를 최대한 줄여줍니다. - 속도나 크기면에서 월등히 유리합니다. (메모리 점유율로 낮아지고 실행도 빨라짐) - 더 이상 현재버전에서 내결함성이나 문제점들을 발견할 수 없었을때 빌드하여 주는 모드입니다. 디버깅 모드 (컴파일시 들어가는 디버깅에 필요한 자질구리한 정보를 뺀 알짜 프로그램만 쏙 뽑아냄) - 실행파일에 디버깅 정보를 삽입하여 언제든지 디버깅을 할 수 있도록 하며 Debug서브 폴더에 실행파일을 만들어줍니다. - 디버깅정보.. 더보기
오픈 소스 c++라이브러리 목록 출처 : http://ko.cppreference.com/w/cpp/links/libs 이 페이지는 특정 기능을 구현하기 위하여 구글링하는 시간을 낭비하지 않도록 오픈 소스 C++ 라이브러리 목록을 취합하는 것이다.다른 사람들에게 유용하다 싶은 라이브러리를 알고 있다면 여기에 링크를 추가해 달라.라이브러리를 소스 형태로 다운로드 할 수 있어야 한다는 것만 제외하고 링크를 추가하기 위한 어떠한 제약사항도 없다.페이지는 '그냥 있는 그대로' 제공된다. - 유용하게 사용되기를 바라지만, 어떠한 것을 보장하지는 않는다. 오래되었을 수도 있고, 클릭했을 때 잘못된 링크나 엉뚱한 곳으로 갈 수도 있다. 만약 그런 오류를 알게된다면 직접 고쳐주면 정말 좋겠다.일반Boost - 방대한 범용 라이브러리 콜렉션 (부스트 .. 더보기
C++ 표준 라이브러리 헤더 파일 출처 : http://ko.cppreference.com/w/cpp/header C++ 표준 라이브러리 헤더 파일 C++ Standard Library header files C++ 표준 라이브러리의 인터페이스는 아래의 헤더 파일들 내에 정의되어 있습니다.유틸리티 라이브러리범용 유틸리티: 프로그램 통제, 동적 메모리 할당, 난수, 정렬 및 탐색시그널 관리를 위한 함수와 매크로 상수Macro (and function) that saves (and jumps) to an execution context가변 길이 인수 목록의 처리런타임 자료형 정보 유틸리티 (since C++11)std::type_index (since C++11)컴파일 시간 자료형 정보std::bitset 클래스 템플릿표준 알고리즘과 함께 .. 더보기
cout 출력 포맷 설정하기 출처 : http://repilria.tistory.com/243 cout은 ostream의 메서드이며, ostream 클래스는 ios 클래스로부터 상속되고, ios 클래스는 ios_base 클래스로부터 상속된다. ios_base 클래스는 출력 상태를 서술하는 정보를 가지고 있다. 1. 진법 변경 Manipulator를 사용하여 화면에 정수를 출력할 때 사용되는 진법을 제어하며, ios_base의 멤버 함수를 사용하여 필드 폭과 소수점 아래 자릿수를 제어할 수 있다. 즉, hex(cout)과 같은 함수 호출은 cout 객체의 수치 출력을 16진수로 설정하며, 다른 진법으로 다시 설정될 때 까지 모든 정수들을 16진법으로 출력한다. 또한 cout 더보기
캐스트 연산자 reinterpret_cast C++의 4가지 캐스트 연산자에 대한 이야기 중 네 번째다.이번은 그중에서 reinterpret_cast 에 대해서 이야기한다. 자...이제 C++ 캐스트 연산자의 복병이 등장한다.이전에 static_cast 이야기를 하면서 살짝 사기를 쳤다.C 스타일의 캐스팅과 가장 비슷한 기능을 하는 무적의 캐스팅은 그 이름도 복잡한 reinterpret_cast 다. 이 캐스트 연산자는 C 스타일의 캐스팅만큼은 아니지만 별반 차이 없이 무배뽀다.캐스팅 대상을 캐스팅 타겟 타입으로 비트단위로 다시 재해석한다고 보면 된다.다른 캐스트 연산자가 처리하지 못하고 남은 뒤치다꺼리를 모두 한다.다만 const_cast 의 역할인 상수성을 날린다거나 하는 등의 기능은 수행하지 못한다. - reinterpret_cast 사용re.. 더보기
Call by Reference vs Call by Address 1. Call by value 는 쉬운 개념이니 아실거라고 믿고 넘어가겠습니다. 2. Call by Reference는 주소값을 넘기는것입니다.주소값이 넘어 가기 때문에.. foo함수에서 값을 변경한다면main에서의 a의 값도 변경이 됩니다.void foo(int &a){} void main(){ int a = 10; foo(a);} 3. Call by address(참조)이 방식은 함수를 호출하는 형식은 Call by value와 같아 보이지만 함수인자를 받는부분이 다르게 됩니다. 보시면 인자를 받는 함수 부분에 &기호가 있습니다.쉽게 말하면 별명과 같은 의미로 사용이 됩니다.그냥 이해하기 쉽도록 설명 한다면 하나의 메모리 공간을 가르치는 변수명 이외에그 메모리 공간을 가르칠수 있는 별명이 하나 존재하.. 더보기
error MSB8008: 지정된 플랫폼 도구 집합이 설치되지 않았거나 올바르지 않습니다. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets(511,5): error MSB8008: 지정된 플랫폼 도구 집합(v110)이 설치되지 않았거나 올바르지 않습니다. 지원되는 플랫폼 도구 집합 값이 선택되었는지 확인하십시오. visual studio를 사용할 때, 이후 버전이나 이전 버전의 솔루션을 사용하다 발생할 수 있는 상황입니다. 이 때, 프로젝트의 속성을 변경을 해주면 되는데 일반 -> 플랫폼 도구 집합 에서 해당 플랫폼에 맞게 변경해주면 된다. 만약 그 값을 모른다면 부모 프로젝트에서 상속이라고 하면 된다. 참고로 Visual Studio 2005 - V8.0 Visual Stu.. 더보기
표준 rand()함수보다 유용한 랜덤 생성 알고리즘 – MT, WELL 출처 : http://www.gamedevforever.com/114 현재 제작 중인 게임에서, 랜덤 시드 값을 일치 시켜서, 랜덤 결과를 서로 다른 클라이언트끼리 동기화 시키는 작업을 진행 하였습니다. 랜덤 시드값만 서로 일치시키면, 이후에 생성되는 랜덤 함수의 결과값들은 모두 일치가 되기 때문에, 예전에 스타크래프트와 같은 패키지 게임에서 자주 사용했던 테크닉입니다. ^^; 서로 다른 클라이언트끼리 처음 시드값만 일치 시키면, 이후의 랜덤값은 정해져 있기 때문에, 그 랜덤값을 사용한 이벤트등의 동기화에 사용하는 것이죠. 이런 테크닉은 패키지 게임 시절에는 리플레이 저장이나 네트워크 동기화등에서 상당히 많이 사용하였습니다. 하지만 온라인 게임으로 넘어오면서, 대부분 서버에서 랜덤값을 직접 생성하여 넘겨.. 더보기
Example: A Matrix Multiplication Program http://maxim.int.ru/bookshelf/PthreadsProgram/htm/r_24.html http://stackoverflow.com/questions/15444500/matrix-multiply-with-threads-each-thread-does-single-multiply 더보기
LINK : fatal error LNK1123: COFF로 변환하는 동안 오류가 발생했습니다. 파일이 잘못되었거나 손상되었습니다. 갑작스러운 시험으로 인해 c++를 맛보기 식으로 공부했습니다. Visual Studio 2010을 노트북에 설치하고 시작하자마자 에러가 뜨네요. LINK : fatal error LNK1123: COFF로 변환하는 동안 오류가 발생했습니다. 파일이 잘못되었거나 손상되었습니다. 해결 : 서비스팩 업데이트를 해 줍니다. 링크 : http://www.microsoft.com/ko-kr/download/details.aspx?id=23691 설치시 다운로드 용량이 600여 메가바이트 정도 되는데 카페 공짜 와이파이는 느리네요. 설치 후 에러가 안뜨는 모습 더보기
Visual Studio 2010에서 c++ 외부 라이브러리 설정 Visual Studio 2010에서 c++ 외부 라이브러리 설정에 대하여 안녕하세요. 저는 전주멤버십 20-2기 신재선입니다. 제가 주로 사용하는 언어는 c++이고, Visual Studio에서 개발을 많이 하여서 개발하기 전에 외부라이브러리를 사용하는데 필요한 설정에 대해서 설명하려고 합니다. 버전이 업데이트 되면서 관련기능의 위치가 바뀌거나, 간단한 것인데도 개발 툴이 익숙하지 않아서 불편을 겪는 분들에게 이 글이 도움이 되었으면 합니다. 1. 빌드 전 필요한 설정 현재는 자신이 만든 소스 외에도 다른 사람이 만든 라이브러리를 사용하는 경우가 많습니다. Visual Studio에서는 라이브러리를 사용하기 위해 다음과 같은 방법을 제공합니다. 1.1 선택한 프로젝트에만 경로를 설정하는 방법 솔루션 탐.. 더보기
C언어 Thread .Net 기반에서는 using System.Threading; 하고 스레드를 쓰면 된다... 하지만 C/C++ 만 가지고 Win32에서 쓰레드 쓰려다 참 고생 많이 했다.. POSIX 표준 Thread, 줄여서 보통 pthreads라고 불리는 것을 Win32에서 쓰는 법. 1. 일단 http://sourceware.org/pthreads-win32/ 로 가서 DLL, LIB, header 파일을 받는다. Just the DLLs, LIBs, header files, and admin documentation is available at: ftp://sourceware.org/pub/pthreads-win32/dll-latest include 폴더와 lib 폴더를 받으면 된다. 2. 그리고 다운받은 파일 .. 더보기
비주얼 스튜디오 없을 때 웹으로 코딩하자! 아래의 사이트를 통해 C언어를 개발 및 테스트를 할 수 있다. (단! 간단하게만!) http://codepad.org/ 더보기
[C언어] 난수 발생 예제 #include#include#include void main() { int a[10]; int i, j; int temp; // 값 교환을 위한 임시 변수 srand(time(NULL)); // 0~99사이의 정수 저장 for(i=0; i 더보기
[Chapter19 과제물][구조체 실습 프로젝트] 연습과제1>> 17일차 학생관리 프로그램을 다음과 같이 수정해보자. StuManage(v2.0) ① 메뉴는 [입력/출력/정렬/검색/종료] 메뉴로 구현되며, 각각의 기능은 사용자 정의함수로 구현한다. ② 구조체 배열은 main 함수에서 선언한다. - 전역변수 사용 금지 [출력결과] 실행파일 참조 더보기
[Chapter18 과제물][구조체 2] 연습과제1>> 아래와 같은 은행관리 프로그램을 작성해보자. ① 구조체 멤버는 계좌번호, 비밀번호, 이름, 잔액으로 정의한다. 구조체 정의 후, main함수에서 다음과 같이 초기화 한다. ACC ac = {1111, "1234", "홍길동", 5000}; ② 고객 한사람의 입금/출금/잔액조회를 수행하는 프로그램을 작성한다. 각각의 기능(입금/출금/잔액조회)은 함수로 구현한다. [출력결과] 실행파일 참조 더보기
[Chapter17 과제물][구조체 1] 연습과제1>> 5명의 학생 데이터를 구조체에 입력받아 출력하는 프로그램을 작성해보자. StuManage(v1.0) ① 학생정보는 학번, 이름 국어, 영어, 수학, 총점, 평균, 등급, 순위로 구성된다. ② 학번은 1번부터 차례대로 저장되며, 이름, 국어, 영어, 수학 점수는 입력받는다. ③ 입력받은 점수로 총점, 평균, 등급, 순위를 구한다. ④ 구조체에 저장된 데이터를 출력한다. [출력결과] 실행파일 참조 더보기
[Chapter16 과제물][문자열 함수] 연습과제1>> ‘인생을 100점짜리로 만들기 위한 조건’을 찾는 법을 프로그램으로 작성해보자. 1. 알파벳과 숫자를 순서대로 연결한다. (A는 1, B는 2, C는 3....Z는 26을 연결한다. ) 2. 어떤 단어나 문장에서 알파벳과 연결된 숫자를 모두 더해 100이 되는 단어를 찾는다. (예를 들어 ‘열심히 일하다’의 ‘hard work’의 합은 98점, 지식의 ‘knowledge'는 96점 ’사랑‘은 ’54점, ‘돈’ ‘money’는 72점이다.) 3. 대/소문자는 구별하지 않는다. [출력결과] 실행파일 참조 당신은 인생을 100점짜리로 만들기 위한 조건을 무엇이라 생각 하시나요??(^&^) 더보기
[Chapter15 과제물][문자열] 연습과제1>> 문자열을 입력받아 대문자, 소문자, 기타문자의 갯수만큼 별표를 찍는 프로그램을 작성해보자. [출력결과] 문자열 입력 : Aba%^3AcdzZ7*() === 갯수 출력 === 대 문 자 : *** 소 문 자 : ***** 기타문자 : ******* Press any key to continue 연습과제2>> 문자열을 입력받아 알파벳의 갯수만큼 별표를 찍는 프로그램을 작성해보자. 단, 대·소문자는 구별하지 않으며, 입력되지 않은 알파벳은 출력하지 않는다. [출력결과] 문자열 입력 : Aba%^3AcdzZ7*() === 알파벳 갯수 출력 === A : *** B : * C : * D : * Z : ** Press any key to continue 더보기
[Chapter14 과제물][포인터 & 함수] 연습과제1>> 다음과 같은 계산기 프로그램을 작성해보자. ① 두 수를 입력받아 사칙연산을 수행하는 프로그램을 작성한다. ② 프로그램은 [N/n]을 입력받기 전에는 무한반복된다. ③ 프로그램이 종료되면, 각각의 연산이 몇 번 수행됐는지 결과를 출력한다. ④ 사용자 정의 함수를 반드시 3개 이상 구현하여 프로그램을 완성해보자. [출력결과] 실행파일 참조 연습과제2>> 다음과 같은 정렬 프로그램을 작성해보자. ① 0~99까지의 100개의 정수를 랜덤하게 저장하여 1을 입력하면 오름차순 정렬되고, 2를 입력하면 내림차순 정렬되는 프로그램을 작성해보자. ② 이 프로그램을 사용자 정의함수로 나눠 구현해보자. ③ 배열의 크기는 매크로 상수로 선언한다. [출력결과] 실행파일 참조 더보기
[Chapter13 과제물][포인터의 이해] 연습과제1>> ① 아래와 같이 int형 배열을 선언한다. int num[5] = {1, 2, 3, 4, 5}; ② ‘+’연산자는 오른쪽으로 ‘-’ 연산자는 왼쪽으로 입력받은 인덱스부터 출력한다. [출력결과] 정수 출력 : 1 2 3 4 5 오른쪽(+), 왼쪽(-) : + 인덱스 입력(0~4) : 3 결과 출력 : 4 5 1 2 3 Press any key to continue [출력결과] 정수 출력 : 1 2 3 4 5 오른쪽(+), 왼쪽(-) : - 인덱스 입력(0~4) : 2 결과 출력 : 3 2 1 5 4 Press any key to continue 더보기