"VC程序设计小技巧20例"完整攻略
简介
VC程序设计小技巧20例是VC++程序设计中常用的技巧总结,适合于从事VC++开发者,主要包括优化技巧、调试技巧、安全技巧等。以下是详细的攻略总结。
1. 使用switch代替if语句
if语句在判断多个变量时效率低下,可以使用switch代替,代码如下:
char c;
cin >> c;
switch (c)
{
case 'a':
cout << "你输入的是a" << endl;
break;
case 'b':
cout << "你输入的是b" << endl;
break;
default:
cout << "你输入的既不是a也不是b" << endl;
break;
}
2. 使用MD5算法进行加密
MD5是常用的加密算法,可以对字符串进行加密,增加系统安全性,代码如下:
// 加密函数
CString EncryptByMD5(CString strText)
{
MD5 md5;
md5.Update((BYTE*)(LPCTSTR)strText, strText.GetLength() * sizeof(TCHAR));
BYTE digest[16]; // 16 bytes -> 128 bits
md5.Final(digest);
CString strResult;
for (int i = 0; i < 16; i++)
{
strResult.AppendFormat(_T("%02x"), digest[i]);
}
return strResult;
}
3. 线程同步
多线程编程时需要考虑线程同步,多线程访问共享资源时需要进行互斥操作,代码如下:
// 临界区对象
CRITICAL_SECTION g_cs;
// 线程1
DWORD WINAPI ThreadFunc1(LPVOID lpParam)
{
// 进入临界区
EnterCriticalSection(&g_cs);
// 操作共享资源...
// 离开临界区
LeaveCriticalSection(&g_cs);
}
// 线程2
DWORD WINAPI ThreadFunc2(LPVOID lpParam)
{
// 进入临界区
EnterCriticalSection(&g_cs);
// 操作共享资源...
// 离开临界区
LeaveCriticalSection(&g_cs);
}
4. 使用OS API实现进程通信
进程之间需要通信时,可以使用OS API实现进程通信,例如命名管道、共享内存、信号量等,代码如下:
// 创建命名管道
HANDLE hPipe = CreateNamedPipe(
_T("\\\\.\\pipe\\TestPipe"),
PIPE_ACCESS_DUPLEX,
PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT,
PIPE_UNLIMITED_INSTANCES,
1024,
1024,
0,
NULL);
// 向命名管道写数据
TCHAR szData[1024] = _T("Hello, World!");
DWORD dwBytesWritten = 0;
WriteFile(hPipe, szData, sizeof(TCHAR) * (lstrlen(szData) + 1), &dwBytesWritten, NULL);
// 从命名管道读数据
TCHAR szBuffer[1024] = { 0 };
DWORD dwBytesRead = 0;
ReadFile(hPipe, szBuffer, sizeof(szBuffer), &dwBytesRead, NULL);
5. 内存泄露排查
在程序开发中,会出现内存泄露的情况,可以使用VS内建的内存泄露排查工具来进行检查,代码如下:
-
在程序入口处加入以下代码:
C++
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
_CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG);
_CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR); -
编译程序并执行,会在控制台输出所有发生的内存泄露情况。
以上就是"VC程序设计小技巧20例"的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:VC程序设计小技巧20例 - Python技术站