I originally ran into this problem 
running 3.5 RC6 
on W2K, but 3.1g
exhibits the same problem.  When I 
run the 
scene below, I get a parse
error, "no matching } in texture, # 
found 
instead."  Here's a sample
file that causes the parse 
error:
 
#include 
"colors.inc"
 
#macro 
fooTexture()
 texture {
  pigment { Red 
}
 }
 texture {
 #if (0)
  pigment { Blue 
}
 #else
  pigment { Green 
}
 #end //if(0)
 }
#end//macro 
fooTexture()
 
#declare foo_texture = 
fooTexture()
 
Any #-whatever within the 2nd layer 
texture causes 
this error.  Try
replacing the #if  .. 
#else .. #end  with  #declare 
causeParseError = 1;
 
The strange thing is that if I put 
#if's in the Red 
layer, it parses
fine.  OK, then you get "error: No 
objects in 
scene".  :-)
 
Any idea what causes this 
problem?  I know 
about the note in section
6.7.6, "Layered Textures", but that has 
to do with 
macros inside
layered textures.  This is the 
other way 
around, layered textures
inside a macro.  I don't see any 
syntax 
ambiguities.
 
Help?
 
-Scott