|
![](/i/fill.gif) |
Thorsten Froehlich wrote:
> John VanSickle wrote:
>
>> Greg M. Johnson wrote:
>>
>>> I cannot get the following code to work:
>>>
>>> //-----------------------------
>>> #macro sign(a)
>>> #if (a<0)
>>> (-a)
>>> #else
>>> (a)
>>> #end
>>> #end
>>
>>
>> I've noticed that this way of using macros to express things leads to
>> parse errors. There is a work-around (which has already been posted),
>> but the docs give no reason for this construction to fail.
>
>
> Well, they do, but I agree it could be a lot clearer. In "Are POV-Ray
> Macros a Function or a Macro?" it explains it:
>
> "When the body of a macro consists of statements that create an entire
> item such as an object, texture, etc. then the macro acts like a
> function which returns a single value."
>
> The "statements that create an entire item" is the important part here.
> What the macro above is are *two* statements that create *two* items.
> Basically, the word "item" means what is best explained as "evereything
> you could also assign to a single #declared variable".
>
>> Is this behavior deemed worthy of correction?
>
>
> It is correct, and it is also possible to obey the "one statement" rule!
> :-) It just requires slightly different syntax:
>
> #macro sign(a)
> (
> #if (a<0)
> -a
> #else
> a
> #end
> );
> #end
>
> is perfectly legal!
Okay. I was already using the work-around.
Regards,
John
Post a reply to this message
|
![](/i/fill.gif) |