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