On Thu, 2008-07-17 at 13:39 -0700, Eric Rannaud wrote:
> The last case may be more interesting, because I think you need support
> at the language level.
> 
> int userspace_ok(void);
> #ifdef KERNEL
> int restricted(void);
> #endif
> int userspace_ok2(void);
> 
> One could argue that it's best to split the interface in two. I'm not
> sure it makes things clearer to follow, though.

Yes. I deliberately left this out of BitC, because I was hoping to avoid
an explosion of compile configurations that would have to be avoided.
Now that I am looking seriously at automatic conversion of C code to
BitC code, I'm being forced to reconsider my view.

Your earlier comment about if and compile-time constants applies here as
well (at least partially). The thing that makes CPP such a nightmare is
not the conditional compilation per se, but the fact that the
substitutions performed by CPP are not performed over lexically "clean"
units.

I've actually been contemplating (with reluctance) a top-level
conditional compilation construct using term expressions and some form
of top-level conditional control, but in abstract I think that the case
you are giving above really is better handled by a second interface.


shap

_______________________________________________
bitc-dev mailing list
[email protected]
http://www.coyotos.org/mailman/listinfo/bitc-dev

Reply via email to