簡體   English   中英

如何從C宏返回值?

[英]How to return value from C macro?

我正在嘗試實現sizeof()運算符,並希望宏返回類似於C lang提供的結果。

我使用gcc構造'()'實現了它,例如:

#define SIZEOF(type)\   
({\ 
 int result;\
 type *p = 0;\
 result = (char*)(p+1)-(char*)p;\
 result;\
})

並像這樣使用它:

x = SIZEOF(double);

沒有使用gcc構造並從中返回值的方法嗎?

我能想到的最好的方法是將另一個參數傳遞給宏並將結果存儲在其中,例如:

#define SIZEOF(type,result)\
 do{\
   type *p = 0;\
   result = (char*)(p+1)-(char*)p;\
 }while(0)

我知道我可以用內聯函數代替此宏,該函數可以完成工作,但正在宏上下文中尋找某些東西。 有什么辦法可以做到這一點?

#define SIZEOF(type) (long int) (((type*)0) + 1)

暫無
暫無

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

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