我想創建一個為引數添加前綴并將其作為函式呼叫的宏。像這樣的東西:
#define FUNC(name) /* some code */
FUNC(add) // => __some_function_name_prefix__add()
FUNC(subtract) // => __some_function_name_prefix__subtract()
FUNC(multiply) // => __some_function_name_prefix__multiply()
FUNC(divide) // => __some_function_name_prefix__divide()
這是我嘗試過的:
#define FUNC(name) __some_function_name_prefix__name()
FUNC(add) // => __some_function_name_prefix__name()
FUNC(subtract) // => __some_function_name_prefix__name()
FUNC(multiply) // => __some_function_name_prefix__name()
FUNC(divide) // => __some_function_name_prefix__name()
但是,他的問題是它總是會擴展到__some_function_name_prefix__name()并且不會使用引數。我怎樣才能解決這個問題?
uj5u.com熱心網友回復:
#define FUNC(name) __some_function_name_prefix__##name()
uj5u.com熱心網友回復:
在宏中使用標記粘貼運算子##。請參閱https://learn.microsoft.com/en-us/cpp/preprocessor/token-pasting-operator-hash-hash。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/522243.html
標籤:C宏c-预处理器
上一篇:如果不使用C中的條件陳述句,如何保證變數永遠不會為零?
下一篇:元素組合2D陣列C
