POV-Ray : Newsgroups : povray.general : Error - missing semicolon when using macro : Error - missing semicolon when using macro Server Time
25 Mar 2023 23:44:50 EDT (-0400)
  Error - missing semicolon when using macro  
From: Tom A 
Date: 21 Jan 2023 13:20:00
Message: <web.63cc2badcc2a7a8c1742c61c57ffd389@news.povray.org>
Error with #local and #macro (?)

I have a macro to turn a part of time into it's own 0-1 value.
(Useful for running landing geer and doors that take time to go from not open to
open or deployed).

Here is some test code:

 // problem test
 #version 3.7;

 #macro subclock2( start, complete, cnt)
   // converts time (in cnt) between start and complete into
   // a value between 0 and 1

   #if (cnt< start)
  #if (cnt>complete)
    ((cnt - start) / (complete - start))
 #end // subclock2

 #local cccc = clock;

 #local c2 = subclock2(.1,.2,cccc);

However, when I use it, I get

"C:\POVRay\scenes\ArtDecoShips\errortest.pov" line 11: Parse Error: All
#declares of float, vector, and color require semi-colon ';' at
end if the language version is set to 3.5 or higher. Either add the semi-colon
or set the language version to 3.1 or lower.

Render failed

Yet the actual line where the macro is invoked has a semicolon.

The code can be made to work by putting parentheses around the call:
#local c2 = ( subclock2(.1,.2,cccc) );

This took me a long time to solve (I hate the error messages - points to the
macro line, leaving me trying to figure out which call generated the error.)

Did I miss something in the help text?

Tom A.

Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.