Re: C ethics question
- From: "Servé Laurijssen" <ser@xxxx>
- Date: Sat, 31 Mar 2007 13:36:30 +0200
"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.
.
- Follow-Ups:
- Re: C ethics question
- From: Barry
- Re: C ethics question
- From: Flash Gordon
- Re: C ethics question
- From: Richard Heathfield
- Re: C ethics question
- References:
- C ethics question
- From: Servé Laurijssen
- Re: C ethics question
- From: Harald van Dijk
- C ethics question
- Prev by Date: Re: C99 library part of C++ TR1
- Next by Date: Re: Visual C++ support of C99 by using "C++ mode" (/TP)
- Previous by thread: Re: C ethics question
- Next by thread: Re: C ethics question
- Index(es):
Relevant Pages
|