g00*_*dds -2 c preprocessor compile-time c-preprocessor
有这个代码:
// Called when x is "a"
#define do(x) doA()
// Called when x is "b"
#define do(x) doB()
Run Code Online (Sandbox Code Playgroud)
是否可以使预处理器解释do("a")为doA()和do("b")asdoB()以及其他doUndefined()(如果提供未知)x?澄清一下:我想将x参数映射到任意代码或函数调用,而不仅仅是 call do{uppercase_x}()。它必须在编译时完成。并且x参数必须是字符串。
谢谢!
对于带有空格的参数不能这样做。如果没有空格,您可以为每个允许的值定义宏。反过来,这些宏可以扩展为您所需的宏,从而将参数名称与最终宏名称隔离。例如:
#define do(x) do_##x
#define do_a doA
#define do_b doB
Run Code Online (Sandbox Code Playgroud)
然后do(a)将扩展到doA并将do(b)扩展到doB。
更新:正如所提到的,paddydo是 C 中的保留关键字,因此您应该为宏选择一个不同的名称。
| 归档时间: |
|
| 查看次数: |
125 次 |
| 最近记录: |