我有一系列需要调用的函数,所有调用的形式都是:
StartingFunctionName[Thing]Callback(&[Thing]);
其中[Thing]
每次都是相同的例如,我必须调用
StartingFunctionNameMyFunctionCallback(&MyFunction);
,我宁愿做foo(MyFunction);
,其中foo将是宏。
我想知道是否有一种方法可以使用宏,使其输入是字符串(或类似的东西)的东西,输出是正确的代码行。
如果这是你的模式:
StartingFunctionName[Thing]Callback(&[Thing]);
和你想要的标记'Thing'替换,然后通过函数像宏:
#define foo(Thing)
StartingFunctionName##Thing##Callback(&Thing)
例子:
foo(exit);
扩大到
StartingFunctionNameexitCallback(&exit);
答案是使用###define foo(thing) StartingFunctionName##thing(& thing)