전체 글 725

명령줄 컴파일러로 컴파일하는 간단한 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

Visual C++ 12와 cygwin64 의 g++로 테스트해 본 C++11 의 vector 타입 초기화

아래의 소스는 (64 비트) 윈도우 8 에서 Visual Studio 2013 Express 의 명령줄 컴파일러 cl 및 cygwin64 의 컴파일러 g++ 로 테스트되었다. (소스를 저장할 시, Visual C++ 용으로는 KSC5601-1987 인코딩으로 저장하고, cygwin64 의 g++ 용으로는 UTF-8 인코딩으로 저장해야 한글이 정상 출력된다.) vector 타입을 초기화(initializer lists)하는 구문 vecor v { .... } 또는 vector v = { ... } 은 C++0x(정확하게는 C++09 이후) 또는 C++11 에서만 지원되는 구문이다. 그러므로 다음 소스는 Visual Studio 2010 이나 g++ 의 버전이 4.4 미만이면 컴파일되지 않는다. Visual..

프로그래밍/C++ 2013.09.25

(Common Lisp 언어로 구현해 보는) 십진법의 신비: 숫자 계산 피라미드 세 가지

다음 소스는 GNU CLisp 으로 실행됨을 확인하였다. 세 함수 pyra1(int int), pyra2(int int), pyra3(int int) 는 재귀호출을 사용하였고, 세 함수 pyramid1(), pyramid2(), pyramid3() 은 loop for 반복문을 사용하였다. #!/usr/bin/env clisp ;; Filename: pyramidOfDigits2.lsp ;; ;; Execute: clisp pyramidOfDigits2.lsp ;; ;; Or ;; ;; Execute: ./pyramidOfDigits2.lsp ;; ;; See: http://darvish.wordpress.com/2008/03/16/the-beauty-of-mathematics-and-the-love-of..

vector 타입을 이용한 간단한 행렬 곱셈을 수행하고 행렬식을 구하는 C++ 언어 소스

다음은 행렬 곱셈을 수행하는 C++ 언어 소스이다. 행의 수, 열의 수. 그리고 두 행렬의 요소들을 모두 컨솔에서 입력해야 한다. 소스는 http://www.physics.utah.edu/~detar/lessons/c++/matrices/node4.html 의 것을 다소 수정한 것이다. // Filename: testSomeMat-03.cpp // // Copmpile: cl /EHsc testSomeMat-03.cpp // Execute: testSomeMat-03 // // Date: 2003.9. 20. #include #include #include using namespace std; typedef vector Vec; typedef vector Mat; Vec operator*(const Ma..

프로그래밍/C++ 2013.09.20

우순열 기순열을 이용하여 정사각행렬의 행렬식을 계산하는 C++ 언어 소스

정리 (정사각행렬의 행렬식, derterminant) n × n 행렬 A = \big( a_{ij} \big) 의 행렬식 \det(A) 는 다음 식과 같다 \det(A) \ = \ \sum_{\sigma} \, \textrm{sign}(\sigma) \, a_{1 \sigma(1)} a_{2 \sigma(2)} \cdots a_{n \sigma(n)} 위에서 합은 집합 \{ 1, 2, \cdots, n \} 위에서의 모든 순열 \sigma에 관한 합이며, \textrm{sign}(\sigma) 는 \sigma가 우순열인 경우에는 +1이고, 기순열인 경우에는 -1이다. 다음의 C++ 언어로 작성된 소스는 순열을 출력하는 소스를 수정아여 정사각행렬의 행렬식을 계산하도록 하였다. 컴파일은 g++ 또는 Visu..

프로그래밍/C++ 2013.09.20

지정한 개수의 모든 순열을 출력하는 C++ 언어 소스

정의 (순열(또는 치환), permutation) S가 집합일 때, S에서 S 위로 가는 일대일함수 즉, S에서 S로 가는 전단사함수를 집합 S 위에서의 순열이라고 한다, 특히 S가 원소 n개를 갖는 유한집합인 경우 S 위에서의 서로 다른 순열은 총 n!(n 팩토리얼)개이다. 다음의 C++ 언어로 작성된 소스는 유한집합 S = { 0, 1, 2, ... , n - 1 } 상에서의 모든 순열을 컨솔에 출력해준다. 우순열(even permutation)인지 기순열(odd permutation)인지도 판별해준다. 컴파일은 g++ 또는 Visual C++ 의 명령줄 컴파일러 cl 을 이용한다. // Filename: permutations.cpp // // Compile: g++ -std=c++11 -o per..

프로그래밍/C++ 2013.09.20