違法な NULL ptr デリファレンスがないように、次のコードは常にコンパイルされるのでしょうか?
私の懸念は、「b」が NULL かどうかを最初に確認する前に、コンパイラが b->value かどうかを確認する可能性があることです。
typedef struct
{
int value;
} mystruct;
int func(mystruct * b)
{
if((NULL == b) || (b->value == 0))
{
return -1;
}
printf("value: %d\n", b->value);
}