generic way to access C++ libs?
Jorgen Grahn
jgrahn-nntq at algonet.se
Sat Nov 13 04:23:09 EST 2004
More information about the Python-list mailing list
Sat Nov 13 04:23:09 EST 2004
- Previous message (by thread): generic way to access C++ libs?
- Next message (by thread): generic way to access C++ libs?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Thu, 11 Nov 2004 12:07:57 GMT, Neil Hodgson <nhodgson at bigpond.net.au> wrote: > Neil Hodgson: > > # Much of the time C++ code only has to be compatible with the other > # modules it is delivered with. > > > Jorgen Grahn: > >> But most of the time it has to be compatible with the standard library. >> >> Even if these flags exist, I think it's very rare to encounter more than > one >> layout, for one specific compiler/compiler version/architecture. > > The most commonly changed layout option is structure packing. Many C/C++ > projects decide upon a particular packing option often just to be compatible > with files from the initial version or other applications and libraries. > > [...] C system libraries like standard I/O and platform > libraries like Win32 use explicit compiler instructions to ensure they can > deal with client option choice. The Win32 headers use #pragma pack(n) to > ensure that client code will compile assuming particular packing of system > structures no matter how the client code is packing its own structures. ... I see. Then this seems to me to be a Windows culture issue which I've missed because I'm a Unix person. The GNU and Solaris libcs (and all other Unix shared libraries that I'm aware of) do not do this. Same thing with AmigaDOS, as I recall it. Access these from code compiled with non-standard packing and you're toast. (Some Unix include files (things in /usr/include/netinet/, for example) have structs with elaborate padding so that they can match e.g. an IP header perfectly. This places a restriction on compiler writers, of course.) That also explains to me why so many embedded projects I've been in have messed with structure packing - the architects were Windows people. One reason this is rare in the non-Windows world is (I suppose) that there's often a huge run-time penalty for accessing misaligned words on non-x86 processors. The default layout is almost always the best possible, unless you are low on memory. /Jörgen -- // Jorgen Grahn <jgrahn@ Ph'nglui mglw'nafh Cthulhu \X/ algonet.se> R'lyeh wgah'nagl fhtagn!
- Previous message (by thread): generic way to access C++ libs?
- Next message (by thread): generic way to access C++ libs?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list