FW: Complier not giving warning/error in this scenario.. Please help..

Ian Lance Taylor ian@airs.com
Thu Sep 29 17:47:00 GMT 2005


"Soujanya Gundlapalli" <souj@packetware.com> writes:

> I am trying to compile the file with the following code. 
> 
> Originally it was:
> if ((erc = pk_val(pline, pkt, mp, PKT_CLEAR, PK_LOCAL))
> By accident I saved the file with the following code.
>             if ((erc =  (pline, pkt, mp, PKT_CLEAR, PK_LOCAL))
> 
> By accident pk_val_call got deleted and when I complied the above code
> using the options 
> cc -c -g, it got compiled successfully. I tried removing  -g also. Even
> then it gave success. Is this a problem with the compiler? Is there a
> fix for this that I can use.

You are using the comma operator.  In C or C++ the value of "(a, b)"
is to evaluate "a", and then to return the value of "b".  This is only
generally useful if "a" has a side-effect, like a function call.  But
it is always legal.  So the above code is correct.

If you compile with -Wall, you should get a warning along the lines of
"left-hand operand of comma expression has no effect".

Ian



More information about the Gcc-help mailing list