C-Code für C und C++ verwendbar machen
Ich hab mich schon immer gefragt woher man eigentlich diese Defines nimmt um C-Code deklarationen so zu schützen, dass sie auch in C++ Code gut reingeholt werden können.
Ja klar, man kann das selber machen, etwas präprozessor bla und los gehts. Aber, das gibts ja vielleicht schon.
Enter #import <sys/cdefs.h>.
Und das ist in in Apple-Code praktischerweise immer schon includiert und enthält praktische Kleinigkeiten wie:
- __BEGIN_DECLS - jetzt kommen C-Deklarationen
- __END_DECLS - fettich
- __dead2 - diese Funktion kehrt nicht zurück (über das 2 könnte ich mich total amüsieren)
- __pure2 - diese Funktion hat keine Seiteneffekte
- __unused
- __printflike(formatArg, firstVarArg)
- __scanflike(formatArg, firstVarArg)
- __COPYRIGHT(string) - erzeugt eine globale variable
- __PROJECT_VERSION(string) - erzeugt eine globale variable
- __deprecated
Dann gibts natürlich noch <AvailabilityMacros.h> das auch noch ein paar Kleinigkeiten enthält - neben dem ganzen Zeug um APIs zu versionieren sind da auch noch mal Attribute definiert:
- WEAK_IMPORT_ATTRIBUTE -- funktion ist vielleicht da
- DEPRECATED_ATTRIBUTE -- funktion soll nicht mehr verwendet werden
- UNAVAILABLE_ATTRIBUTE -- funktion ist nicht vorhanden (z.B. weil sie API ist die erst in einer späteren Version des Frameworks unterstützt wird)
Vor allem __BEGIN_DECLS, __END_DECLS und __deprecated werde ich mit Sicherheit sofort benutzen. Ob ich die anderen auch verwende, weiß ich noch nicht. Mal schaun. :)
