검색결과 리스트
Study/C / C++에 해당되는 글 5건
- 2008/07/05 단일체 (Singleton) 코드 (2)
- 2008/05/28 const 키워드의 의미
- 2007/11/23 동적할당을 통한 행열의 곱셈, 역행열, 전치행열 구하기
- 2007/01/31 ASSERT, VERIFY, TRACE
- 2006/11/02 [C++] typedef
글
#include <cassert>
template <typename T> class Singleton
{
static T* ms_Singleton;
public:
Singleton( void )
{
assert( !ms_Singleton );
int offset = (int)(T*)1 - (int)(Singleton <T>*)(T*)1;
ms_Singleton = (T*)((int)this + offset);
}
~Singleton( void )
{
assert( ms_Singleton);
ms_Singleton = 0;
}
static T& GetSingleton( void )
{
assert( ms_Singleton );
return ( *ms_Singleton );
}
static T* GetSingletonPtr( void )
{
return ( ms_Singleton);
}
};
template <typename T> T* Singleton <T>::ms_Singleton = 0;
'Study > C / C++' 카테고리의 다른 글
| 단일체 (Singleton) 코드 (2) | 2008/07/05 |
|---|---|
| const 키워드의 의미 (0) | 2008/05/28 |
| 동적할당을 통한 행열의 곱셈, 역행열, 전치행열 구하기 (0) | 2007/11/23 |
| ASSERT, VERIFY, TRACE (0) | 2007/01/31 |
| [C++] typedef (0) | 2006/11/02 |
트랙백
댓글
글
n 은 변수이나 const 키워드를 붙여줌으로 상수화 되었다.
따라서 n에 다른 값을 대입하는 것은 허용되지 않는다.
- const int* n;
데이터 상수화.
n이라는 포인터가 가르키는 값을 상수화 시킨다.
- int* const n;
포인터 상수화.
n이 가르키는 포인터를 상수화 시킨다.
- const int* const n;
데이터와 포인터 상수화.
'Study > C / C++' 카테고리의 다른 글
| 단일체 (Singleton) 코드 (2) | 2008/07/05 |
|---|---|
| const 키워드의 의미 (0) | 2008/05/28 |
| 동적할당을 통한 행열의 곱셈, 역행열, 전치행열 구하기 (0) | 2007/11/23 |
| ASSERT, VERIFY, TRACE (0) | 2007/01/31 |
| [C++] typedef (0) | 2006/11/02 |
트랙백
댓글
글
운화형의 세미나 과제로 동적할당을 통한 행렬의 곱셈, 역행렬, 전치행렬을 구하는 프로그램을 만들어 봤다. 전체적인 프로그램의 흐름은 다음과 같다.
CMatrixMgr::ModeSelect 를 통하여 행렬의 곱, 역행렬, 전치행렬 중 어떠한 작업을 할 것인지 입력을 받는다. 그리고 CMatrixMgr::Run을 호출하여 행렬의 크기를 설정하는 CMatrix::SetArray, 행렬의 값을 입력 받는 CMatrix::InputMatrix, 계산을 수행하는 CMatrix::Calculation, 결과를 출력하는 CMatrix::Result 를 차례로 호출한다.
매니저 클래스인 CMatirxMgr 은 CMatrixInverse, CMatrixMultiply, CMatrixTranspose 클래스와 CMatrix 형의 *pCMat을 가지고 있다.
'Study > C / C++' 카테고리의 다른 글
| 단일체 (Singleton) 코드 (2) | 2008/07/05 |
|---|---|
| const 키워드의 의미 (0) | 2008/05/28 |
| 동적할당을 통한 행열의 곱셈, 역행열, 전치행열 구하기 (0) | 2007/11/23 |
| ASSERT, VERIFY, TRACE (0) | 2007/01/31 |
| [C++] typedef (0) | 2006/11/02 |
트랙백
댓글
글
출처 : www.sprite3d.net
MFC가 아닌 응용프로그램에서 ASSERT(), VERIFY(), TRACE() 사용하기
by Gabriel Fleseriu
원문 : http://www.gamedev.net/reference/articles/article1846.asp
번역 : conaman(conaman@spirit3d.net)
C++ 로 게임 개발을 해 올 때 몇몇 사람들이 MFC를 사용하기로 결정을 했습니다 늘 저는 ASSERT(), VERIFY(), TRACE() 매크로들의 유익함을 발견합니다 그래서 저는 윈도우 플랫폼을 위한 어떤 프로젝트에서든지 작업할 수 있도록 제 자신의 버전을 만들기로 했습니다.
약간 생각하게 하는 것들:
ASSERT()는 값이 0이면 실행을 멈추도록 하기 위해 매개변수을 평가하기로 되어있습니다 릴리즈 모드에서는 assert가 아무것도 전개되지 않도록 해야만 합니다. VERIFY()는 릴리즈 모드에서 매개변수를 전개하도록 되어 있는 것을 제외하고는 ASSERT() 와 아주 유사합니다. ASSERT() 는 어떠한 함수호출도 포함되어 있지 않는 표현으로 사용되어야만 합니다. 함수호출을 포함하는 표현을 위해 VERIFY() 를 사용해야만 하고, 그렇게 해서 함수호출은 릴리즈 모드에서도 보전됩니다. TRACE() 는 디버그 윈도우에 출력되는 것을 제외하고는 printf() 의 대응물입니다. 릴리즈 모드에서는 TRACE() 또한 아무것도 전개하면 안 됩니다. 세개의 매크로들 중 어떤것도 릴리즈 모드에서 어떤 런타임 벌점을 의미하지 않습니다. 그 매크로들은 미리 정의된 _DEBUG 매크로를 사용해서 디버그 모드와 릴리즈 모드 사이를 구별합니다. 이것은 Microsoft Visual C++에 특정적입니다. 만약 다른 몇몇 다른 컴파일러를 사용하고 있다면 적절한 매크로를 사용해야만 할 것입니다.
바퀴를 재발명하기 위해 어떤 이해도 없기 때문에 저는 MFC 코드로 슬쩍 엿봤고 유사하게 저의 매크로들을 만들었습니다. ASSERT() 와 VERIFY() 를 위해서 저는 멋진 "Debug assertion failed..." 대화상자들은 곁에 남겨두고 간단하게 아주 평범한 breakpoint 를 구현 했습니다.
ASSERT(), VERIFY(), TRACE() 를 지원하는데 필요한 두 파일들이 있습니다. 그것은 debug.h 와 debug.cpp 입니다. 프로젝트의 몇몇 메인 헤더에 debug.h 를 추가해야만 합니다. 그것은 자신 안에 어떤 파일도 포함하지 않기 때문에 순환 포함(recurrent inclusion) 들에 더럽혀지지 않습니다. 또한 프로젝트의 소스파일들에 debug.cpp 를 더해야만 합니다.
여기에, 그것들이 있습니다.
// file debug.h
#ifndef __DEBUG_H__
#define __DEBUG_H__
#ifdef _DEBUG
void _trace(char *fmt, ...);
#define ASSERT(x) {if(!(x)) _asm{int 0x03}}
#define VERIFY(x) {if(!(x)) _asm{int 0x03}}
#else
#define ASSERT(x)
#define VERIFY(x) x
#endif
#ifdef _DEBUG
#define TRACE _trace
#else
inline void _trace(LPCTSTR fmt, ...) { }
#define TRACE 1 ? (void)0 : _trace
#endif
#endif // __DEBUG_H__
//file debug.cpp
#ifdef _DEBUG
#include <stdio.h>
#include <stdarg.h>
#include <windows.h>
void _trace(char *fmt, ...)
{
char out[1024];
va_list body;
va_start(body, fmt);
vsprintf(out, fmt, body);
va_end(body);
OutputDebugString(out);
}
#endif
'Study > C / C++' 카테고리의 다른 글
| 단일체 (Singleton) 코드 (2) | 2008/07/05 |
|---|---|
| const 키워드의 의미 (0) | 2008/05/28 |
| 동적할당을 통한 행열의 곱셈, 역행열, 전치행열 구하기 (0) | 2007/11/23 |
| ASSERT, VERIFY, TRACE (0) | 2007/01/31 |
| [C++] typedef (0) | 2006/11/02 |
트랙백
댓글
글
typedef
// *****************
// typedef 예약어 사용 예
#include <iostream>
typedef unsigned short int USHORT; // typedef로 정의된다.
int main()
{
using std::cout;
using std::endl;
USHORT Width = 5;
USHORT Length;
Length = 10;
USHORT Area = Width * Length;
cout << "Width : " << Width << endl;
cout << "Length : " << Length << endl;
cout << "Area : " << Area << endl;
return 0;
}
Width : 5
Length : 10
Area : 50
'Study > C / C++' 카테고리의 다른 글
| 단일체 (Singleton) 코드 (2) | 2008/07/05 |
|---|---|
| const 키워드의 의미 (0) | 2008/05/28 |
| 동적할당을 통한 행열의 곱셈, 역행열, 전치행열 구하기 (0) | 2007/11/23 |
| ASSERT, VERIFY, TRACE (0) | 2007/01/31 |
| [C++] typedef (0) | 2006/11/02 |
RECENT COMMENT