On Wed, Dec 12, 2007 at 09:22:39AM +0100, Diego Biurrun wrote:
On Tue, Dec 11, 2007 at 08:40:18PM -0500, Rich Felker wrote:
On Tue, Dec 11, 2007 at 09:32:21PM +0100, diego wrote:
Log: Replace SYS_DARWIN condition by __APPLE__ || __DARWIN__.
I strongly prefer SYS_DARWIN. __APPLE__ and __DARWIN__ are not under our control and there is no guarantee that they won't change or be defined on another non-Darwin system.
Unlikely.
Anyway, SYS_DARWIN is no different than __APPLE__ || __DARWIN__, it's just set by configure, that's all. Plus, in many cases it is abused for things that are specific to just one of both systems or entirely unrelated things like the Apple gcc fork.
Without a doubt it is better to replace conditionals like __APPLE_CC__ with feature-specific tests. Nevertheless SYS_DARWIN is *not* the way to go, it just wrongly lumps two separate systems together.
I already removed SYS_DARWIN from FFmpeg for a good reason.
OK, thanks for explaining your reasoning. But I still maintain that any code referencing a symbol or preprocessor macro beginning with __ or _[[:alpha:]] is inherently broken; it has unspecified behavior. If more fine-grained feature detection is needed, make a new SYS_APPLE and SYS_DARWIN or something similar, but please don't use the compiler-predefined macros. Rich