簡體   English   中英

C ++宏-作為“參數”的下一個單詞而不是()

[英]C++ macro - pass as “parameter” next word instead of in ()

這段代碼:

#define DEREF(ptr) (*ptr)

MyClass *pClass = new MyClass;
DEREF(pClass).foo(); // equivalent of (*pClass).foo() or simply pClass->foo()

我可以將#define宏配置為接受ptr參數作為宏后面的單詞而不是括號內的語句,以便執行以下操作嗎:

DEREF pClass.foo();

否,C宏只能在方括號'()'中接收參數

我可以將#define宏配置為接受ptr參數作為宏后面的單詞嗎

不可以。但是,您可以編寫自定義代碼預處理器,該預處理器將在將代碼傳遞給C ++編譯器之前對其進行轉換。 這不是很簡單或不實際,但是可以做到。 qt 4中的 moc以這種方式運行-掃描自定義關鍵字,並將其替換為編譯器可以接受的C ++語句。 這允許Qt 4實現其“信號/插槽”機制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM