|Strange C constructs email@example.com (2004-02-26)|
|Re: Strange C constructs derek@NOSPAMknosof.co.uk (Derek M Jones) (2004-02-26)|
|Re: Strange C constructs firstname.lastname@example.org (2004-02-27)|
|Re: Strange C constructs email@example.com (Jeremy Yallop) (2004-02-27)|
|Re: Strange C constructs firstname.lastname@example.org (Alex Colvin) (2004-02-27)|
|Re: Strange C constructs derek@NOSPAMknosof.co.uk (Derek M Jones) (2004-03-02)|
|Re: Strange C constructs email@example.com (Dave Thompson) (2004-03-02)|
|Re: Strange C constructs firstname.lastname@example.org (2004-03-02)|
|[3 later articles]|
|From:||Derek M Jones <derek@NOSPAMknosof.co.uk>|
|Date:||26 Feb 2004 09:59:50 -0500|
|Posted-Date:||26 Feb 2004 09:59:50 EST|
> My selfmade C preprocessor stumbled across a strange construct in one of
> the Windows headers. Now I would like to know whether this really makes
> #define something /##/
It was probably surrounded by a #if that included:
> I can imagine that the intended effect is the creation of an comment
> (// ...) in the source code, but IMO this is not achievable in
> accordance to any C/C++ standard.
> Is this construct really a stupid Microsoft extension,
I imagine they have customers who think it is an intelligent extension.
> intended to
> prevent the compilation of Windows code with other compilers, or did I
> miss something in the newer C specs?
It does not prevent other compilers from processing this source. But
it does require that they support this construct.
> Another question may be easier to answer:
> typedef int (procname)(int arg);
> According to K&R only /pointers/ to procedure-types can be constructed.
Hang on. I thought you were a fan of standards?
> Does there exist newer specs which allow to typedef procedures
If you mean C99, then no. If you mean vendor extensions, I cannot
think of any.
Return to the
Search the comp.compilers archives again.