본문 바로가기

프로그래밍/C-CPP

(17)
[C] 4x4 수도쿠 코드 // sudoku4x4.cpp : Defines the entry point for the console application. // // #include "stdafx.h" #include #include int g_num_solutions = 0; void find_sudoku_pan(int *pan); // // 최초의 판 모양은 // // 01-- // 23-- // ---- // ---- void init_pan(int *pan) { for (int i = 0; i < 16; i++) *(pan + i) = -1; *(pan + 4 * 0 + 0) = 0; // [0][0] *(pan + 4 * 0 + 1) = 1; // [0][1] *(pan + 4 * 1 + 0) = 2; // [1][0] ..
Visual Studio 에서 utf-8 인코딩된 소스코드 사용하기. 리눅스 플랫폼에서 개발된 c/c++ 소스코드를 컴파일할 일이 생겼다. 한국어 윈도우에서 visual studio 2015 로 프로젝트를 만들어 컴파일하여 돌려보니, 가져온 소스코드의 인코딩이 cp949 가 아닌 utf-8 이어서 메시지가 깨져서 나왔다. 소스 자체의 인코딩을 바꾸어 주는 방법도 있었지만, utf-8 소스를 그대로 유지하고, visual studio 2015 프로젝트 세팅을 변경하여 사용하고 싶었다. 찾아보니 그런 방법이 있었다. https://docs.microsoft.com/ko-kr/cpp/build/reference/utf-8-set-source-and-executable-character-sets-to-utf-8?view=msvc-140 /utf-8(소스 및 실행 파일 문자 집합을..
[MFC초보] Simple3D 프로그래밍 처음 배웠을 때 즈음에 만들었던 MFC 프로그램이다. 직각사면체를 그린다. 마우스를 움직이면 사면체가, 세 직각축 중 하나의 축을 중심으로 회전한다. 마우스를 클릭하면, 회전축이 바뀐다. 무언가 동적인 입체를 그려보고 싶었고, 한정된 지식과 아이디어로 만들 수 있었던 가장 간단한 프로그램이었다. 처음에는 리눅스에서 n-curse 라이브러리로 텍스트화면에 구현했었었고, mfc 를 처음 배울 때, 그걸 다시 구현해 보았던 것이다. 단순하기 그지없는 프로그램이지만, 혹시 궁금한 사람들을 위해 소스도 첨부해 놓는다.
한글 visual studio 를 사용할 때, vcpkg install zlib 과정에 문자가 깨지며 빌드에러가 발생함. 한국어 (또는 일본어, 중국어등) visual studio 가 깔려 있을 경우, vcpkg 를 이용하여 패키지를 install 할 때, 중간 명령의 문자가 깨지면서 실패하는 경우가 있다. 이 경우의 대응법을 찾다가 한 일본 블로거의 포스팅을 발견하여 번역한다. 아래 방법을 사용하여 2019년 11월 27일 최신버전에서 동일한 문제를 넘어갈 수 있었다. (비록 원본 포스팅의 날짜는 2017년 10월 것이지만.) zlib 와 protobuf 등에서 동일한 문제가 발생했다. 원본 포스팅 : https://eiichiromomma.github.io/2017/10/13/vcpkg-ninja/ vcpkg을 테스트해 보려고, Power Shell 에서 git clone https://github.com/Microso..
[Win32] CharLowerA(utf8str) 은 문제가 생길 수 있다. utf-8 인코딩된 한글 문자열에 대해서 CharLowerA 를 적용하면, 문자가 깨질 수 있다. char utf8str[200];WCHAR s1[200] = L"제공호";WCHAR s2[200]; // s1 을 utf8 인코딩으로 변환하여 utf8str 을 채운다. (WideCharToMultiByte 등을 사용.) CharLowerA(utf8str); // utf8str 중에서 알파벳만 모두 소문자로 바꾸려 한다. // 변경된 utf8str 을 unicode 로 변환하여, s2 에 저장한다. (MultiByteToWideChar 등을 사용.) cmp = wcscmp(CharLowerW(s1), s2); 위 코드에서 두가지 경로로 문자를 소문자화하여 비교한다.1. s1 -> utf8로 인코딩 -> Ch..
[VCPKG] VCPKG OFFLINE 사용하기 python pip의 편리성에 익숙해진 사람(나)들은 cpp 오픈소스 라이브러리들을 빌드하며 무수히 머리털을 뽑아냈다. (너무 고달펐음. 빌드뿐 아니라, 라이브러리, 인클루드 패쓰 설정하고 하는 것도)마이크로소프트에서 visual studio 에 오픈소스 라이브러리들을 매끄럽게 통합시키는 vcpkg 라는 툴을 (이미 몇년 전에)개발했다는 걸 알았다. 이걸 테스트해 보려고 하고 있는데...안타깝게도, vcpkg 는 vcpkg install zlib 와 같은 명령을 때리면, 오픈소스 라이브러리 소스를 네트워크를 통해 다운로드 받아와서, 빌드를 진행한다.그래서, 인터넷 연결이 되지 않는 내 주 개발환경에서는 vcpkg 를 쓸 수 없는 것인가 하고 낙담하고 있는 중에, 다음과 같은 글을 reddit 에서 발견했..
[번역|스택오버플로우] 타입명 뒤에 괄호를 붙이는지 안 붙이는지에 차이가 있나? https://stackoverflow.com/questions/620137/do-the-parentheses-after-the-type-name-make-a-difference-with-new [질문] by David ReadTest 가 보통 클래스라면, 아래 두가지에 차이가 있나? Test* test = new Test; Test* test = new Test(); [3번 답변] by bayda 일반적으로 첫번째 것은 디폴트-초기화, 두번째 것은 값-초기화가 된다. 예를 들어 int (POD 타입)의 경우int* test = new int - *test의 값은 무엇이라도 될 수 있다.int* test = new int() - *test 의 값은 0이 될 것이다. 이외의 동작은 Test 타입이 어떤 것..
[CEF] CEF Chromium Embedded Framework 빌드하기 CEF Chromium Embedded Framework 빌드하기 https://bitbucket.org/chromiumembedded/cef-project 의 Build 섹션의 지시를 따라 윈도우 비주얼 스튜디어 2015 빌드 솔루션을 생성하면서 어려웠던 부분을 기록. Setup : cmake 를 설치한다. 비주얼 스튜디오 2013 이상, 운영체제는 윈도우 7이 필요하다. git 으로 소스코드를 다운받으라고 하는데, 일단은 필요 없었다. Build : http://opensource.spotify.com/cefbuilds/index.html 에서 윈도우 32/64비트용 tar 파일을 받는다. tar 파일을 풀어 놓고. 폴더에 mkdir build 로 빌드 폴더를 만들고, build 폴더에서 cmake ..