On Thu, Jun 26, 2014 at 04:32:06PM +0000, Polehn, Mike A wrote:
> There is a very good reason for putting constants on the left hand side of a
> compare statement.
> For example:
> if (NULL = x)
> will be a compiler error, while the following will compile and need debugging:
> if (x = NULL)
>
> Although I try not making the comparison mistakes, I have recently made that
> exact mistake and had to debug.
> If I had used the second format, the complier would have output an error and
> saved the time of debugging.
I'm quite aware.
Every decent compiler already issues a diagnostic. Clang:
../lib/dynamic-string.c:304:16: error: using the result of an assignment as a
condition without parentheses [-Werror,-Wparentheses]
if (*s = '#') {
~~~^~~~~
../lib/dynamic-string.c:304:16: note: place parentheses around the assignment to
silence this warning
if (*s = '#') {
^
( )
../lib/dynamic-string.c:304:16: note: use '==' to turn this assignment into an
equality comparison
if (*s = '#') {
^
==
GCC:
../lib/dynamic-string.c: In function 'ds_get_test_line':
../lib/dynamic-string.c:304:9: error: suggest parentheses around assignment
used as truth value [-Werror=parentheses]
sparse:
../lib/dynamic-string.c:304:16: warning: assignment expression in conditional
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev