[英]Concat string with __VA_ARGS__
我有以下宏:
#define MY_FCT1( id, ... ) \
FCT( id,__VA_ARGS__ ); \
我想創建一個新的來做這樣的事情:
#define MY_FCT2( id, ... ) \
MY_FCT1( id, (" %s : ",Name())" "__VA_ARGS__); \
但我收到以下錯誤:
錯誤:表達式不能用作函數
任何人都有一個想法如何解決這個問題?
目前尚不清楚您要做什么。 宏無法調用函數。 宏可以產生包含函數調用的替換文本,但是直到運行時才調用該函數。
要將Name()
添加到MY_FCT1
接收的__VA_ARGS__
,只需將其添加為普通參數(帶逗號)即可。
#define MY_FCT2( id, ... ) \
MY_FCT1( id, Name(), __VA_ARGS__);
您似乎試圖將帶引號的空格字符用作串聯運算符。 運算符(僅在宏的替換文本中有效)是##
。 例如。
#define CAT(x,y) x ## y
//or
#define CAT(x,y) x##y
// ^ ^ spaces are not relevant here
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.