C++ 常用代码段整理
1、检查内存泄漏:
头文件
// MS Visual C++ memory leak debug tracing #if defined(_MSC_VER) && defined(_DEBUG) # define _CRTDBG_MAP_ALLOC # include <crtdbg.h> #endif
source文件
// MS Visual C++ memory leak debug tracing #if defined(_MSC_VER) && defined(_DEBUG) _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); #endif
2、使用c++11 新特性:
// C++11 override #if defined(_MSC_VER) || (defined(__GNUC__) && (__GNUC__ >= 5)) \ || (defined(__clang__) && (defined (__cplusplus)) && (__cplusplus >= 201103L)) \ || defined(__CPPCHECK__) # define OVERRIDE override #else # define OVERRIDE #endif // C++11 noexcept #if (defined(__GNUC__) && (__GNUC__ >= 5)) \ || (defined(__clang__) && (defined (__cplusplus)) && (__cplusplus >= 201103L)) \ || defined(__CPPCHECK__) # define NOEXCEPT noexcept #else # define NOEXCEPT #endif // C++11 noreturn #if (defined(__GNUC__) && (__GNUC__ >= 5)) \ || (defined(__clang__) && (defined (__cplusplus)) && (__cplusplus >= 201103L)) \ || defined(__CPPCHECK__) # define NORETURN [[noreturn]] #else # define NORETURN #endif
3、获取当前时间的time stamp. 获取的是当前区时下的当前时间。(秒级)
time_t now = time(0); tm ltm; localtime_s(<m, &now); std::string sRet; char sRetBuf[80]; sprintf_s(sRetBuf, sizeof(sRetBuf), "%4d/%02d/%02d %02d:%02d:%02d", (1900 + ltm.tm_year), (1 + ltm.tm_mon), (ltm.tm_mday), ltm.tm_hour, ltm.tm_min, ltm.tm_sec);
gmtime_s 和localtime_s 区别:
(1).gmtime将time_t转换为UTC时间,UTC的全称为Coordinated Universal Time,即世界标准时间。
(2).localtime将time_t转换为本地时间(local time)。北京时间比UTC时间早8小时。
Note: 获取毫秒级的当前时间可以用getsystemtime();
SYSTEMTIME st;
GetSystemTime(&st);