Wo wir schon bei unportablen Erweiterungen von C sind, möchte ich ein nützliches Feature von GCC erwähnen, über das ich im Zuge meiner Objective-C-Expeditionen gestolpert bin: die #import-Direktive.

#import ist eine Alternative zu #include , die darauf achtet, dieselbe Datei nicht mehrmals einzubinden, ohne auf die althergebrachten Tricks mit #define und #ifndef angewiesen zu sein. Objective-C-Programmierer nutzen sie eigenartigerweise ständig. Vielleicht hängt das damit zusammen, daß Objective-C nie ein eigener offizieller Standard war und implementierungsspezifische Erweiterungen daher nicht so verpöhnt sind wie in C.

Von der Verwendung der Direktive wurde von Seiten der FSF lange Zeit abgeraten, weil ihre Semantik nicht ganz klar war und von GCC nicht richtig unterstützt wurde. GCC 3.4 behob dieses Problem jedoch, so daß einer Verwendung heutzutage bis auf die Nonportabilität nichts im Wege steht:

File handling in the preprocessor has been rewritten. GCC no longer gets confused by symlinks and hardlinks, and now has a correct implementation of #import and #pragma once. These two directives have therefore been un-deprecated.

Ob man die Direktive auch in C-Code verwenden sollte, ist freilich eine andere Frage. Es ist sicher nicht das Schlechteste, in der Regel standardkonformen Code zu schreiben. Andererseits braucht man vor implementierungsspezifischen Erweiterungen dann jedenfalls nicht zurückzuschrecken, wenn der Code ohnehin schon aus grundsätzlichen Überlegungen heraus unportabel ist.