【发布时间】:2013-04-01 17:42:35
【问题描述】:
假设我设置了一个宏扩展如下...
#define WARN_START @"DANGER"
#define WARN_RESET @"THE COAST IS CLEAR"
#define WARN(x) WARN_START x WARN_RESET
输入 WARN(@"*** Your boss is coming. ***")
输出DANGER *** Your boss is coming. *** THE COAST IS CLEAR✅
假设我有一个函数……
NSString * WhosComing(void){ return @"*** Some fool. ***"; }
如何在不先将其分配给变量的情况下将此类函数的结果传递给宏,即
WARN(WhosComing())
错误expected ')'
我弄乱了额外的括号,即
#define WARN((x))…。或者 ...WARN_START (x) WARN_RESET 但是...
错误invalid operands to binary expression等
以及尝试将 cuntion 作为指针或其他东西(即WARN(&WhosComing()))传递,但无济于事。我确信这是可能的/简单明了……但我没有计算机科学学位,所以我从来没有学过……对某人来说容易回答吗?
【问题讨论】:
-
kbd 不是用于显示输入和输出,而是用于显示键盘的键。
-
@AnoopVaidya 什么,你不喜欢吗?
-
不,
Input:和Output :会比按钮样式更好看。 -
您不想将其分配给变量是因为您想避免重复编写该代码还是出于其他原因?
标签: objective-c c function pointers macros