qmake奇淫技巧之字串巨集定義

2021-10-10 04:00:00 字數 1354 閱讀 8502

閱讀本文大概需要3.3分鐘

我們平時在軟體開發過程中需要定義一些巨集,以便在**中呼叫,這樣每次不需要修改**,只需要修改外部編譯命令就可以得到想要的引數,非常方便

比如我們想在軟體介紹中顯示軟體版本,讓別人知道當前使用的軟體是那個版本,一般會怎麼做呢?

今天看看平時使用最多的qt creator是怎麼處理的

隨便開啟qt creator的關於軟體可以看到

通過閱讀原始碼就可以很清楚的知道,qt creator是通過在pro配置檔案中定義巨集,然後在源**中直接讀取顯示的

下面來簡單說說如何實現,主要包含下面幾個過程

pro檔案中定義字串巨集

巨集定義字串

在原始碼中直接呼叫

我們開啟原始碼qtcreator.pri檔案,就可以看到關於版本號的定義

qtcreator_version = 4.4.1
上面qtcreator_version變數定義了乙個版本號,在其他配置檔案中也可以直接讀取該變數

但是,僅僅定義乙個變數是不夠的,在原始碼中是無法讀取到的,直接編譯會報錯

巨集定義就是這樣乙個簡單語句

defines += qtcreator_version=\"\\\"$$qtcreator_version\\\"\"
在搞清楚上述語法之前,必須要知道反斜槓轉義的知識 反斜槓轉義

\\(對反斜槓轉義)

\[(對中括號轉義)

\debug out

qtcreator 4.4.1

很輕鬆就可以定義字串巨集在**中使用,這個技巧還是很方便的

在定義字串巨集的時候一定要注意,你要定義的字串是否包含空格,如果沒有空格,還可以簡單這樣寫

這是為什呢?我們通過makefile檔案可以發現,如果你的字串包含空格,那麼處理後會是這個樣子

qmake在處理時後面多加了乙個-d,進而出現錯誤

:0:10: warning: missing terminating " character
正確的makefile檔案處理過程

......

qt creator

C 之 把字串作為巨集引數

define printstring arg cout arg 在巨集表示式中,字元 放在引數arg的前面,表示在進行轉換時,引數放在雙引號中。如 printstring hello 預處理器就會把它轉換為 cout hello 邏輯 if指令 邏輯 if指令的使用方式有兩種。第一,可以測試某個符號...

字串及處理之七 ATL轉換巨集

atl轉換巨集 atl 轉換巨集是各種字元編碼之間進行轉換的一種很方便的方式,在函式呼叫時,它們顯得非常有用。為了使用這些巨集,需要先包含atlconv.h標頭檔案。atl轉換巨集的名稱是根據下面的模式來命名的 源型別 2 新型別 或者 源型別 2c 新型別 據有第二種形式的名字的巨集的轉換結果是常...

Python基礎 之 字串常用方法及技巧

格式 縮排 空行 行長 行長度一般不超過 str1 select from testa where a 1 and b 2 and c in select id from testb where a 1 and d in select name from namelist where d 2 pri...