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(&ltm, &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);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM