I wonder if the following code will always be compiled so that there are no illegal NULL ptr dereferences?
My concern is that the compiler may check if b->value before first checking if "b" is NULL.
typedef struct
{
    int value;
} mystruct;
int func(mystruct * b)
{
    if((NULL == b) || (b->value == 0))
    {
        return -1;
    }
    printf("value: %d\n", b->value);
}
 
     
     
    