|
|
1
4
我查看了绘制线条条的宏扩展,注意到它只是用一个绑定、gl begin和gl end将主体包装起来。所以你可以把你想要的任何代码放在里面。 所以
应该工作。 |
|
|
2
2
为什么不这样,用函数代替宏:
这应该调用带有所需参数的绘制线条条。这个例子不适合宏,在函数可以执行的地方不应该使用宏。 注意:我没试过,因为这个盒子上没有粘液。 编辑:再看一次,我不知道您是否想在调用绘制线条之前评估顶点。在这种情况下,函数将如下所示:
|
|
|
3
2
如果你真的需要
请注意,这种样式很糟糕,除非它是 真正地 必要的。 |
|
4
1
这看起来像是Lisp中一些宏系统的典型问题。通常的Lisp文献适用。例如 On Lisp 作者:保罗·格雷厄姆(使用普通的口齿不清)。 通常,宏使用它所包含的源并生成新的源。如果宏调用是(foo bar),并且宏应该根据bar的值生成不同的内容,那么这通常是不可能的,因为bar的值通常不可用于编译器。Bar实际上在运行时只有一个值,而不是编译器扩展宏时。因此,人们需要在运行时生成正确的代码——这可能是可能的,但通常被视为糟糕的风格。 在这些宏系统中,宏不能应用。一个典型的解决方案如下(常见的lisp):
不过,使用上述解决方案并不总是可能的。例如,当参数数目不同时。 同样,把线条条作为一个宏也不是一个好主意。最好把它写成函数。 |