原创 Qt在pro文件中配置條件編譯

Qt在pro文件中配置條件編譯 概述 該篇博客主要總結梳理Qt項目在pro文件中如何實現條件編譯。 通過定義宏 在pro文件中可以通過DEFINES定義宏變量,如下述代碼所示: DEFINES += TEST

原创 CMake學些筆記-將頭文件的代碼組織編譯成接口庫(接口目標)

CMake將頭文件的代碼組織編譯成接口庫(接口目標) 文章目錄接口目標簡述CMake接口目標實現方法接口目標應用場景1實現方法CMakeListst.txt編寫頭文件包含方式接口目標應用場景2實現方法CMake

原创 C++operator()(重載小括號運算符)

在C++語言中有時候需要重載運算符: (),今天我們主要介紹它主要應用的場合。 仿函數 先考慮一個簡單的例子:假設有一個vector,你的任務是統計長度小於5的string的個數,如果使用count_if函數的話,你的代碼可能長成

原创 C++11 類型推導decltype

重用匿名類型 以下代碼使用3種不同的匿名類型,decltype可以推導其類型並且進行重用。 enum class{K1, K2, K3}anon_e; // 匿名的強類型枚舉 union { decltype

原创 C++11 類型推導 auto

靜態類型和動態類型的區別 靜態類型的類型檢查主要發生在編譯階段 動態類型的類型檢查主要發生在運行階段 關鍵字auto 傳統auto是一個存儲類型指示符(storage-class-specifier),使用auto修飾的變量是

原创 總結CMake設置編譯選項

添加編譯選項 在cmake腳本中,設置編譯選項可以通過add_compile_options命令,也可以通過set命令修改CMAKE_CXX_FLAGS或CMAKE_C_FLAGS。 使用這兩種方式在有的情況下效果是一樣的,但請注

原创 Linux系統 Debian Git安裝與配置教程

Git安裝 首先進入root模式 在安裝新軟件包之前,應該始終更新一下apt軟件包索引: apt-get update 安裝Git apt-get install git Git配置 現在已經安裝了Gi

原创 C++11完美轉發

C++11 完美轉發 文章目錄簡介完美轉發完美轉發的定義使用“萬能”引用引用摺疊規則完美轉發用例關鍵字```forward``` 簡介 該篇博客主要介紹C++11中的完美轉發,對完美轉發的原理和使用方法進行介紹

原创 C++11變長模板

C++11變長模板 文章目錄簡介模板和函數參數包模板參數包說明解包在可變參數模板中使用遞歸進階不同的包拓展方式 簡介 該篇博客主要介紹C++11中的變長模板,對變長模板的原理和使用方法進行介紹。本篇博客參考書籍

原创 C++ std::function介紹和使用

std::function簡介 std::function是C++11中新引入的模板類。 類模板std::function是一種通用的多態函數包裝器。std::function可以存儲,複製和調用任何Callable 目標的實例,

原创 CMake中引用Boost庫

CMake中引用Boost庫 文章目錄概述CMakeLists.txt編寫find_package搜索路徑設置用例Boost動態庫鏈接Boost頭文件庫鏈接 概述 在Linux開發時常常使用Boost庫,若項目

原创 CMake目標屬性(Properties on targets)

CMake 目標屬性 文章目錄簡介目標屬性(Properties on targets) 簡介 本篇博客主要是根據在項目實踐以及平常學習CMake語法的過程中積累的一些知識點,進行總結歸納,因此該篇博客將持續更

原创 C++11 std::move

C++11 std::move 文章目錄概述關鍵字```std::move```概述錯誤用例正確用例1正確用例2總結 概述 本篇博客根據深入理解C++11新特性解析與應用一書中的內容以及自己在使用std::mo

原创 C++11就地初始化與列表初始化

C++11就地初始化與列表初始化 1.就地初始化 1.1 簡介 在C++11之前,只能對結構體或類的靜態常量成員就行就地初始化,其他的不行。如下代碼所示: class Test { private: sta

原创 Boost.preprocessor

Boost.preprocessor總結 簡介 在項目中發現有使用Boost庫中的preprocessor庫,而目前中文關於該庫的介紹很少,在此根據查看Boost庫的參考文檔,對於該庫的使用根據自己的經驗進行總