QT 巨集定義中比較巧妙的設計

2021-09-25 11:18:11 字數 696 閱讀 8679

qt 巨集定義中比較巧妙的設計

今天在學習qt qml 中發現一段巧妙的巨集定義故記錄下來。

在mian.cpp中**如下:

#include "../../shared/shared.h"

declarative_example_main(demos/calqlatr/calqlatr)

在shared.h中**如下:

#define declarative_example_main(name) int main(int argc, char* ar**) \

\ new qqmlfileselector(view.engine(), &view);\

view.setsource(qurl("qrc:///" #name ".qml")); \

if (view.status() == qquickview::error)\

return -1;\

view.setresizemode(qquickview::sizerootobjecttoview);\

view.showfullscreen();\

} else \}

一句很簡短的** declarative_example_main(demos/calqlatr/calqlatr) 就可以代替很多的重複的**,是不是很方便呢。。。

container of 巧妙的巨集定義

include linux kernel.h define container of ptr,type,member include linux stddef.h define offsetof type,member size t tpye 0 member container of 中,第乙個引...

do while 0 在巨集定義中的巧妙用法

大家都知道,do while condition 可以表示迴圈,但你有沒有遇到在一些巨集定義中可以不用迴圈的地方,也用到了 do while.比如 define delete pointer p do while 0 這時,do while 0 的功能就不僅僅是迴圈了,這是do.while 0 的一...

一些比較精妙的巨集定義

今天在網上突然發現了下面幾個關於c 中的巨集定義的說明,回想下,好像在系統的 中也見過這些零散的定義,但沒有注意,看到別人總結了下,發現果然很有用,雖然不知有的道可用與否,但也不失為一種手段,所以就先把它摘抄下來,增加一點見識 1,防止乙個標頭檔案被重複包含 ifndef bodydef h def...