経験の総括
7208 ワード
のびパラメータ
スレッドベースクラスとロック
コントロールカラーの設定
注意:テキスト関連の定義はヘッダファイル:wincon.hでは、フォント色、背景色、出力位置などの情報を定義し、ビット情報タグを通過する.
2 D配列パラメータの転送
たとえば、2 D配列があります.
「snprintf」:識別子が見つかりません
テンプレートクラスとテンプレート関数
テンプレートクラスメンバー関数の宣言と定義
一般クラステンプレート関数
vector事前定義長さ
.resize(len)
プリコンパイルヘッダファイル
http://www.cnblogs.com/sfqh/p/3389876.html
void ShowLog(const char* formart, ...)
{
FILE* filelog = fopen("log.txt","a+"); //
if(!filelog)
return;
char StrOut[100] = {0};
va_list arg_ptr = NULL;
va_start(arg_ptr,formart);
vsprintf_s(StrOut,formart,arg_ptr);
va_end(arg_ptr);
fprintf(fileLog,StrOut);
fclose(filelog);
}
スレッドベースクラスとロック
#include
class HThread
{
public:
HThread();
virtual ~HThread();
virtual void Run() = 0;
virtual void Start();
void SetId(int Id){mThreadId = Id;};
int GetId(){return mThreadId;};
HANDLE GetHandle(){return mThread;};
private:
static DWORD WINAPI ThreadFunc(LPVOID lpParm);
HANDLE mThread;
int mThreadId;
};
//
class Mutex
{
private:
Mutex(const Mutex&);
Mutex& operator=(const Mutex&);
public:
Mutex():cs(){InitializeCriticalSection(&cs);}
~Mutex(){DeleteCriticalSection(&cs);}
void lock(){EnterCriticalSection(&cs);}
void unlock(){LeaveCriticalSection(&cs);}
private:
CRITICAL_SECTION cs;
};
//
class LOCK
{
private:
LOCK(const LOCK&);
LOCK& operator=(const LOCK&);
public:
explicit LOCK(Mutex& c):cs(c){cs.lock();}
~LOCK(){cs.unlock();}
private:
Mutex& cs;
};
//.cpp
HThread::HThread():mThreadId(0){}
HThread::~HThread(){}
DWORD WINAPI HThread::ThreadFunc(LPVOID lpParm)
{
assert(lpParm);
HThread* pThrd = static_cast(lpParm);
pThrd->Run(); //
return 0;
}
void HThread::Start()
{
mThread = CreateThread(NULL,0,ThreadFunc,this,0,NULL); // 0/CREATE_SUSPENDED
}
コントロールカラーの設定
#include <conio.h>
inline void SetTextColor(WORD colors)
{
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole,colors);
}
// SetTextColor(FOREGROUND_BLUE|FOREGROUND_INTENSITY);
注意:テキスト関連の定義はヘッダファイル:wincon.hでは、フォント色、背景色、出力位置などの情報を定義し、ビット情報タグを通過する.
2 D配列パラメータの転送
たとえば、2 D配列があります.
int H[2][2] = {{1,2},{3,4}};
は、パラメータとして関数に渡すために、次のいくつかのパラメータメソッドがあります.void Func(int a[][2]); // , [][]
// :
void Func(int (*a)[2]);
// :
Func(H);
/************************************/
// ,
void Func(int **a, int m, int n);
// :
Func((int**)H,2,2); *((int*)array + n*i + j);
「snprintf」:識別子が見つかりません
snprintf() printf , c , `#include ` 。
snprintf() c/c++ , , 。 gcc , snprintf(), VS _snprintf。 snprintf() _snprintf , :
#if _MSC_VER
#define snprintf _snprintf
#endif
テンプレートクラスとテンプレート関数
テンプレートクラスメンバー関数の宣言と定義
template<class T>
class A
{
public:
void func();
}
template<class T>
void A::func()
{
/******/
}
一般クラステンプレート関数
class B
{
public:
template
void Recv();
}
template<>
void B::Recv()
{
/*****/
}
vector事前定義長さ
.resize(len)
プリコンパイルヘッダファイル
http://www.cnblogs.com/sfqh/p/3389876.html