我希望通過使用宏來設定基于變數型別的函式,從而在 c 中實作可選引數。
#define dostuff(BOOL) dostuffwithbool(BOOL)
#define dostuff(INT) dostuffwithint(INT)
這種事情有可能嗎?(即使我知道它可能不是)。無論多長時間或 hacky,我都會接受任何答案。
另外,如果不可能,請不要投反對票。我問這個是因為我對宏的語法很陌生,而且我不確定它們到底能走多遠。
uj5u.com熱心網友回復:
前處理器本身不能處理 C 型別,因為宏在程式的標記化之后被擴展,但是 C 語言的之前的語法結構被決議。
根據您的應用程式,您可以使用_GenericC11 中的可用程式。它基本上是switch-case超過型別。
#define dostuff(val) \
_Generic((val), bool: dostuffwithbool \
, int: dostuffwithint) (val)
dostuffwithbool請注意,如果/dostuffwithint是類似函式的宏,則此解決方案將不起作用。由于缺少(跟隨宏,宏不會被擴展。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/485086.html
