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.
Comments
Submit a comment
Note: This website uses a JavaScript-based spam prevention system. Please enable JavaScript in your browser to post comments. Comment format is plain text. Use blank lines to separate paragraphs.