프로그래밍/C++ 58

cygwin/mingw 의 g++ 로 utf-8 한글 처리하기

다음은 utf-8 인코딩으로 저장한 C++ 소스이다. Cygwin의 g++ tkdyd tl, 만일 아래의 소스에서 std::setlocale(LC_ALL, "ko_KR.UTF-8"); 대신 std::locale::global (std::locale ("ko_KR.UTF-8")); 로 하면 캄핑ㄹ은 되지만 실행 시에 Segmentation fault (core dumped) 에러가 난다. * 소스 파일명: testLocale_003.cpp // Filename: testLocale_003.cpp // // Compile: g++ -std=c++11 -o testLocale_003 testLocale_003.cpp // or g++ -std=c++0x -o testLocale_003 testLocale_00..

프로그래밍/C++ 2014.04.10

Qt 5.2.1 의 Qt Creater 3.0.1 을 이용한 Hello 예제 작성하기

* Qt 5.2.1 내려받기 (아래의 예는 Visual Studio 2010 용을 받아서 설치한 경우이다. Qt Creator 3.0.1 은 자동으로 함께 설치된다,) Qt Creator 를 시작한 후 메뉴에서 File --> New File or Project... 를 택한다. 그리고 New 창에서 다음 그림에서와 같이 Applications --> Qt Quick Application 을 택하고 "Choose..." 버튼을 클릭한다. 이어 나타나는 New Qt qUICK aPPLICATION 창에서 애플리케이션이 생성될 폴더와 이름을 정한다. 원하는 폴더거 없는 경우 그 우측의 "Browse" 버튼을 클릭하여 생성하거나 선택한다. 다음 창에서는 Qt Quick Componenet Set 을 정한다. ..

프로그래밍/C++ 2014.02.28

MinGW 의 g++ 와 SymbolicC++ 를 이용한 간단한 인터프리터

SymbolicC++ 는 GiNaC 처럼 심볼 처리 수학식 계산을 지원하지만, 리눅스 계열 뿐만 아니라 윈도우 환경에서도 Visual C++ 나 MinGW 의 g++ 와 함께 사용할 수 있는 수학 심볼 처리 라이브러리이다. * SymbolicC++ 내려받기 * Wikipedia 에서 설명하는 SymbolicC++ * MinGW 의 g++ 를 위한 SymbolicC++ 라이브러리 만들기 모든 작업은 MinGW\msys\1.0 폴더에 있는 msys.bat 파일을 실행하여 msys 창에서 한다. $ ./configure $ make $ make install $ make clean 생성된 라이브러리 파일 libsymbolicc++.a 와 libsymbolicc++.la 는 /usr/local/lib 폴더에 존..

프로그래밍/C++ 2014.01.17

Visual C++ 2010 과 SymbolicC++ 를 이용한 간단한 부정적분 계산

SymbolicC++ 는 GiNaC 처럼 심볼 처리 수학식 계산을 지원하지만, 리눅스 계열 뿐만 아니라 윈도우 환경에서도 Visual C++ 나 MinGW 의 g++ 와 함께 사용할 수 있는 수학 심볼 처리 라이브러리이다. * SymbolicC++ 내려받기 * Wikipedia 에서 설명하는 SymbolicC++ * Visual C++ 를 위한 SymbolicC++ 라이브러리 만들기 Visual Studio 에서 솔루션 파일 SymbolicC++3.sin 을 열고 아래 그림 처럼 메뉴 탭에서 Dynamic 이라고 설정된 곳을 Static 으로 변경하고 빌드한다. 그러면 에러와 경고가 몇 개 쏟아질 것이다. * 에러 해결하기 SymbolicC++ 를 빌드하는 과정에서 C:\Program Files (x86..

프로그래밍/C++ 2014.01.17

C++ 언어에서 동작하는 쓰레기 수집기(Garbage collector)

C/C++ 언어 프로그래밍에서 까다로운 부분 중의 하나는 획득했던(할당받았던) 메모리를 여하히 해제하느냐이다. 프로그램밍의 사소한 오류로 메모리 부족 현상이 쉽게 일어나기 때문이다. 프로그램밍의 사소한 오류로 메모리 부족 현상이 쉽게 일어나기 때문이다. 자바 언어, 파이썬 언어, C# 언어 등은 자동으로 쓰레기 수집(garbage collection)이 이루어지므로 거의 신경쓰지 않아도 되지만, C 언어는 소스 작성하는 프로그래머가 직접해야 한다. 오래 전(10여년 전)에 Hans Boehm 가 만들었던 C/C++ 언어용 쓰레기 수집기(Boehm-Demers-Weiser conservative garbage collector, 줄여사 BoehmGC 러고 부름)를 이용하여 컴파일되고 실행되는 소스이다. 이..

프로그래밍/C++ 2013.10.20

명령줄 컴파일러로 컴파일하는 간단한 Visual C++ 2010 용 MFC 응용프로그램 예제

다음 한 개의 C++ 소스파일 만으로 간단한 Visual C++ 2010 용 MFC 응용프로그램을 만든다. // Filename: MfcHelloApp.cpp // // Compile: cl /nologo /MD /W3 /EHsc /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Yc /FD /c MfcHelloApp.cpp // // Link: link /nologo /subsystem:windows /incremental:no /machine:I386 /out:"MfcHelloApp.exe" MfcHelloApp.obj // // Execute: MfcHelloApp // // See: %VisualStudio2010_HOME%\Sa..

프로그래밍/C++ 2013.10.10

명령줄 컴파일러로 컴파일하는 간단한 Visual C++ 2010 용 Win32 응용프로그램 예제

다음 한 개의 C++ 소스파일 만으로 간단한 Visual C++ 2010 용 Win32 응용프로그램을 만든다. // Filename: ExSdkApp.cpp // // Compile: cl /Zi /nologo /W3 /WX- /O2 /Oi /Oy- /GL /D "WIN32" // /D "NDEBUG" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /Gm- /EHsc /GS /Gy /fp:precise // /Zc:wchar_t /Zc:forScope /Gd /analyze- /errorReport:queue ExSdkApp.cpp // kernel32.lib user32.lib gdi32.lib // // Execute: ExSdkApp // // See: http://msd..

프로그래밍/C++ 2013.10.10

Visual C++ 2010 에서 컴파일되는 여러가지 컨솔 Hello 예제 모음

1. hello_a.cpp 첫 번째 예제는 main() 함수 대신 wmain() 함수를 쓰는 예제이다. wmain 함수의 두 번째 파라미터를 const char *argv[]) 로 하는 대신에 const wchar_t *argv[] 로 해야 하며, 인자로 받은 문자열을 부동소수점수로 변환하기 위해 _wtof(wchar_t[]) 함수를 쓰고 있으며, 한글 출력을 위해 stdio.h 의 printf() 함수를 그냥 쓰면 된다. wchar_t[] 타입의 문자열을 prntf() 함수로 출력하기 위해서는 포매터 %s 대신 %ws 를 써야 한다. 만일 #include 구문을 생략하면, 컴파일 시 printf(), _wtof(), pow(), log() 함수들을 찾지 못하는 에러가 난다. // Filename: he..

프로그래밍/C++ 2013.10.09

C++98 에서와 C++11 에서의 swap 함수 사용법 비교

C++98 에서는 swap 함수를 쓸려면 #include 을 했지만, C++0x 와 C++11 에서는 #include 로 바뀌었다. 또 빝트인 타입의 데이터를 swap 할 때는 이전 처럼 std::swap(dat1. data2) 하지만, 빌트인 타입이 아닌 데이터를 swap 할 때는 std:: 를 붙이지 않고 swap(data1, data2) 로 해야 한다. Visual C++ 의 cl 로 컴파일할려면 Visual Studio 2008 이상이면 되고. g++ 로 컴파일할려면 g++ 4.5.x 이상이면 된다. 만약 Haskell Platform 에 설치된 g++ 4.5.2 로 컴파일할려면 옵션 -enable-auto-import 를 추가하면 성공작으로 컴파일될 것이다. 다음 소스의 컴파일과 실행을 테스트한..

프로그래밍/C++ 2013.09.30

c++0x 의 vector 타입과 for 반복문에 관하여

다음 소스는 g++ 4.6.2, g++ 4.8.0, g++ 4.8.1 그리고 Visual Studio 2013 Express 의 cl 로 컴파일됨이 확인되었다. (g++ 4.5.3 과 Visual Studio 2010 의 cl 로는 range based for 구문 때문에 컴파일되지 않는다.) // Filename: vector_for_loop_01.cpp // // Purpose: How to use vector types and for loops. // // With g++ 4.6 above // Compile: g++ -std=c++0x -o vector_for_loop_01 vector_for_loop_01.cpp // Compile: g++ -std=c++11 -o vector_for_loop_..

프로그래밍/C++ 2013.09.27