On Mon, Apr 12, 2004 at 11:55:45AM -0700, Dann Corbit wrote: > 1. > The C language does not define alignment of structs. Platform ABI standards do, though (hence the "as long as it adheres to..." clause in my previous post). Whether it's in the C language or in the platform's ABI standards is important when writing portable code; it should not matter when compiling an existing product--provided that the platform defines the ABI unambiguously. The latter is what's in question here.
> The C language does not specify that an integer shall be the same size > on two different platforms. That is not a problem when linking across compilers, only when linking across ABIs. I would expect that doing so would fail at link time. Besides, as a practical matter, even the 64-bit platforms current today normally specify that int is a 32-bit type so this should not come into play in this case, even when linking e.g. Itanium code to x86 code. > The C language does not specify that IEEE arithmetic must be used or > even that a double shall be able to represent a value larger than a > float. Again, I doubt this is relevant in this case where the problem is linking across compilers on the same platform, not across platforms. > Mingw GCC is both a C and a C++ compiler. Fortunately, the C compiler > is used, because there is no way that the code base would compile as C > code. A trivial example to show why not is the frequent use of the C++ > keyword 'new' in the code base. Here is an example: With gcc at least, the matter is even simpler than that. It selects an appropriate front-end (C, C++, ...) based on the names of the source files being compiled. This may break down at link time however; g++ links to the C++ standard library, which gcc by default doesn't. Jeroen ---------------------------(end of broadcast)--------------------------- TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]