aegl@edee.UUCP (Tony Luck) (02/17/84)
[Please do not eat this line] We've just started porting emacs on our GEC 63/30 and came across the following curiosity - just in case you're not entirely fed up with people complaining about oddities in C syntax that should never come to light if people used a few more brackets in expressions I thought I'd post it to the net for you to ignore/flame about/whatever. There is a macro: #define dsputc(c) (--DSskip<0 && --left>=0 ? *cursor++ = c : 0) This causes complaints from the GEC compiler every time it is used - but the VAX 4.1 compiler (and presumably the SYS III compiler for which this version of emacs was purchased) do not object. K&R says that the assignment operators have lower precedence than "?:" so it looks as though brackets are required around the "*cursor++ = c" expression and that the 4.1 bsd compiler is wrong to accept this. [I also added brackets around the 'c' so that calling the macro with an expression as argument wouldn't muck things up too much]. Tony (let's have more brackets) Luck { ... UK!ukc!edcaad!edee!aegl}