Re: C ethics question
- From: "Barry" <barryg@xxxxxxxxxxxxxxxxxx>
- Date: Sat, 31 Mar 2007 07:34:21 -0500
"Servé Laurijssen" <ser@xxxx> wrote in message
news:eulh3t$vre$1@xxxxxxxxxxxxxxxxxxxxxxxxxx
"Harald van D?k" <truedfx@xxxxxxxxx> wrote in message
news:1175340222.133195.49390@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Servé Laurijssen wrote:
Recently, I found myself in the following situation:
There is library software written in C which declares some externals
like:
struct METER m1;
struct METER m2;
in different sourcefiles and I have no control over these sources.
Then there's functions that operate on these meters and will generate an
event which passes a METER * to identify which meter has been changed.
static void OnChangemeter(struct METER *m)
{
if (m == &m1) ...
if (m == &m2) ...
}
Now the comparison of these pointers is UB in C [...]
No, it isn't.
oh, I thought that you can only compare pointers if they are declared in
the same object.
struct METER meters[10];
if (m == &m[1]) ..
etc would have worked but comparing "random" pointers is UB.
You may be confusing this with the behavior of <,>,<=,>=.
Read the standard sections on relational operators and equality
operators.
.
- References:
- C ethics question
- From: Servé Laurijssen
- Re: C ethics question
- From: Harald van Dijk
- Re: C ethics question
- From: Servé Laurijssen
- C ethics question
- Prev by Date: Re: C ethics question
- Next by Date: Re: About Union's question
- Previous by thread: Re: C ethics question
- Next by thread: Re: C ethics question
- Index(es):
Relevant Pages
|