[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Legacy applications and headers
From: |
Markus Hitter |
Subject: |
Re: Legacy applications and headers |
Date: |
Fri, 19 Mar 2004 19:36:13 +0100 |
Am 19.03.2004 um 16:40 schrieb David Ayers:
Marcus Müller wrote:
I found out that GDL2 often uses constructs like the following in its
headers:
#ifndef NeXT_Foundation_LIBRARY
#include <Foundation/NSArray.h>
...
To verify, I just created an empty "Foundation Tool" in Xcode (Mac OS X
10.3.3) and NeXT_Foundation_LIBRARY indeed appears to be undefined,
right after the #import of Foundation/Foundation.h. Tried the same in
ProjectBuilder on OS X 10.1.5 and it isn't defined either.
To investigate further, I added an #import <Foundation/NSArray.h> and
#include <Foundation/NSArray.h> to both. Still, everything works fine.
No errors no warnings ...
(For completeness' sake, in the example above, without the manual
definition of NeXT_Foundation_LIBRARY the build will fail on MacOSX
due to redefinitions of NSArray and the like.)
... so I'm not sure how this happens. You always should be able to
include/import a header as often as you like.
Might be some trouble with the precompiled header mechanism. See Scott
Tookers posting on Oct 27 2003 on Apple's Xcode Users list:
It sounds like the problem you are running into is that we are not
detecting when we need to rebuild the precomp header (which we have
made improvements on for the next release).
- this might apply here or not, I don't know. -
I believe the test was intended to insure ... that we only wanted to
use the precompiled headers for Apple's Foundation
It's quite possible this didn't work all the time ...
Maybe there is another marker we could use?
since you get 95 % of the compilation speed increase by using the
precompiled header at all we could drop the entire test. Some redundant
#include's don't matter[1].
If you want to keep the test, since even non-Apple gcc will use
precompiled headers soon, there should be some platform independent
test.
Cheers,
Markus
[1] The reason is simple: Usually, headers begin with something like:
#ifndef __FOUNDATION_NSARRAY_H__
#define __FOUNDATION_NSARRAY_H__
...
Since this flag is defined in the precompiled header already, the
entire file contents is dropped. Left is the exercise to scan the file
for the corresponding #endif.
See my posting on Jan 1 2003 on GNUstep Discuss for verification.
- Re: Legacy applications and headers, (continued)
- Re: Legacy applications and headers, Adam Fedor, 2004/03/19
- Re: Legacy applications and headers, Marcus Müller, 2004/03/19
- Re: Legacy applications and headers, Helge Hess, 2004/03/19
- Re: Legacy applications and headers, Nicola Pero, 2004/03/19
- Re: Legacy applications and headers, Marcus Müller, 2004/03/19
- Re: Legacy applications and headers, Helge Hess, 2004/03/19
- Re: Legacy applications and headers, Nicola Pero, 2004/03/19
- Re: Legacy applications and headers, Adam Fedor, 2004/03/19
- Re: Legacy applications and headers, Nicola Pero, 2004/03/19
- Re: Legacy applications and headers, David Ayers, 2004/03/19
Re: Legacy applications and headers,
Markus Hitter <=
Re: Legacy applications and headers, Nicola Pero, 2004/03/19