我想編寫一個C宏,它可以是一個整型文字或類似於整型文字的東西,也可以是另一個宏的名稱,並且將其它宏擴展爲整數文字的值,索引爲一個論點,例如用於將任意宏擴展一定次數的宏?
MAGIC(4, FUN)
膨脹以
FUN(0) FUN(1) FUN(2) FUN(3)
相反,如果我會MORE_MAGIC它接受一個範圍的開始和長度,即會更好:
例如
MORE_MAGIC(1, 3, FUN)
擴展到
FUN(1) FUN(2) FUN(3)
注:
- 我可以擴展的數量住不限於,我不知道,99,或50,或類似的東西。
- 您無法對FUN進行假設。需要是通用的。不,這不適用於手動展開循環。
- C-only解決方案是最受歡迎的以及需要C++的解決方案(例如,如果您以某種方式在解決方案中使用模板)。
- 解決方案的行數(包括#包括但不包括註釋)的總數應該最好適中。說,不超過200.
爲什麼要這樣?如何擴展到for循環? – Schwern
「你無法做出有關FUN的假設」和「使用模板」基本上是不兼容的。通過允許使用模板,您可以讓人們對FUN進行假設。這聽起來像你不想說爲什麼你想要這個,因爲你認爲你最瞭解,但你的問題中的筆記已經讓我懷疑。 – hvd
此外,編輯一個問題以取消現有答案的準確性,這些答案明確提供了您所要求的內容,但這些問題還沒有完成,您應該已經知道了。 – hvd