【发布时间】:2019-08-20 18:42:04
【问题描述】:
我在做一个 C 项目,它通过使用宏实现了一种多态性
void method1Instrumentation(void*);
bool method2Instrumentation(void*);
bool method3Instrumentation(void*);
#define method1(arg) method1Instrumentation(arg)
#define method2(arg) method2Instrumentation(arg)
#define method3(arg) method32Instrumentation(arg)
对于method1Instrumentation, method2Instrumentation, method3Instrumentation 中的每一个,都有几个实现。基于内部配置,编译器“选择”适当的函数。
我(可能)无法更改给定的设计。
但我需要将asserts 添加到method*。
工作正常
#define method1(arg) assert(arg == NULL) method1Instrumentation(arg)
不起作用(编译问题)
#define method2(arg) assert(arg == null) method2Instrumentation(arg)
由于原始代码有以下调用而出现问题
if(method2(arg))
{
}
我应该如何根据我的限制添加assets?
【问题讨论】:
-
您打算声明
method1Instrumentation3 次吗?还是应该是 2 和 3? -
什么是
null,应该是NULL? -
"我应该如何添加
assets?"应该是assert。 -
如果
if声明arg == null会发生什么? -
您不应该断言 arg not 为空吗?