Marius Groeger wrote:
> On Wed, 27 Jun 2007, Julian Seward wrote:
> 
> > > > In Valgrind-world we use an alternative approach, which is to typedef
> > > > a set of new integral types and use those exclusively, and not use the
> > > > native 'int', 'long' etc.  The new types have a single fixed meaning
> > > > regardless of the host or guest and it is up to the configure script
> > > > to set up suitable typedefs.  At startup Valgrind checks the size and
> > > > signedness of these types is as expected, so any configuration errors
> > > > are caught.  This has proved very helpful in porting to a number of
> > > > platforms.
> > 
> > So in this particular case we have the types UWord and Word 
> > (unsigned and signed machine words) which it is guaranteed are
> > the same size as void*, on all platforms.
> > 
> > We also capitalise the first letter of all type names as that
> > makes the code easier to read and makes it obvious when you are
> > inadvertantly using the native 'int', 'long' etc.
> 
> FWIW, any C code defining such types with a "single fixed meaning" 
> should use very(!) distinct prefixes to keep those identifiers within 
> their own namespace. From what I can tell having done quite a lot of 
> porting and component integration of C code, capitalization is 
> definitely not enough to ensure self-containedness of your code. :-)

Indeed. We have already host_ and target_ prefixes in some places, which
are IMHO a natural choice for a naming convention.


Thiemo


Reply via email to