1

我想使用一个断言宏,它既NSAssert包含 ObjC 方法,又assert包含 C 函数内部的普通(或其他东西)。

有没有一种干净的方法可以在运行时(或者更好的是,编译时!)检测我当前在 ObjC 方法中执行的操作?

我知道这一点,self并且_cmd将在一个方法中定义和有效,但我不确定是否有一种明显的方法可以安全地检查局部变量的存在。我忘记了一些明显的事情吗?

4

1 回答 1

0

也许您可以使用标准的预定义宏来测试文件是否由 Objective-C 编译器编译。

//in the header file
#define MyAssert(A) NSAssert(A) assert(A)

//in the C file
#if !defined(__OBJC__)
#define NSAssert(A) 

//in the Obj-C file
#if defined(__OBJC__)
#define assert(A) 


/**/
f()
{
//...
MyAssert(TestCase && "Error Message");
//...
}
于 2012-11-26T08:01:11.803 回答