On 1/29/21 4:13 PM, Guy Sotomayor via cctalk wrote:
In a lot of industry standard coding practices (MISRA,
CERT-C) that type
of statement is prohibited and *will* result in an error being reported
by the checker/scanner.
The if statement in your example has at least 2 errors from MISRA's
perspective:
?* assignment within a conditional statement
?* the conditional not being a boolean type (that is you can't assume 0
?? is false and non-0 is true...you actually need to compare...in this
?? case against NULL)
Or zero; but then many current C (not C++) implementations do not define
an intrinsic boolean type. When writing using gcc, for example, I have to
#include <stdbool.h>
So, that leaves us with the value of NULL:
3.2.2.3 Pointers
An integral constant expression with the value 0, or such an
expression cast to type void * , is called a null pointer constant. If a
null pointer constant is assigned to or compared for equality to a
pointer, the constant is converted to a pointer of that type. Such a
pointer, called a null pointer, is guaranteed to compare unequal to a
pointer to any object or function.
--Chuck