Re: uuid operator
* George:
Thanks Alf,
My confusion is, uuid is not a function or something which I can debug into.
It is a C++ operator.
For example, code like this,
struct __declspec(uuid("00000000-0000-0000-c000-000000000046")) IFoo;
How could I know what happens and what is the function to prepend uuid? :-)
OK.
It might be difficult to understand because it's a feature that's *meaningless*
in C++, where the same could be achieved much more easily using the standard
language. It does make sense for C, though.
In C++ you could do
template< typename T >
UUID const& uuidOf();
and then to associate an UUID with IFoo you'd do
template<>
UUID const& uuidOf<IFoo>()
{
static UUID theUuid const = { ... };
return theUuid;
}
and then you could call it like this:
uuidOf<IFoo>()
There's nothing more to it.
It's just a way to externally associate a value with a type, and as shown above
in C++ that can just as easily be done via C++ templates -- but e.g. C does not
have a template facility, so to have something that works for both languages,
for code that may be processed as C in one context and as C++ in some other
context, you need a language extension that has same syntax in both languages.
Cheers & hth.,
- Alf
--
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?