Extensions C, portabilité et compilateurs alternatifs

Original : C extensions, portability, and alternative compilers

Pourquoi c'est important

Illustre les défis de compatibilité pour nouveaux compilateurs C

Un développeur de compilateur C partage les défis rencontrés avec les extensions non-standard et la compatibilité. Les en-têtes glibc utilisent des vérifications préprocesseur pour détecter les compilateurs supportés.

L'article examine les problèmes de portabilité du code C réel qui dépend d'extensions non-standard. L'auteur, développeur d'un compilateur C, détaille les obstacles rencontrés avec glibc. Le fichier sys/cdefs.h utilise des macros prédéfinies pour déterminer les extensions supportées, mais désactive simplement __attribute__ pour les compilateurs autres que GCC, clang ou TinyCC. Cela pose problème pour struct epoll_event qui nécessite __attribute__((packed)) pour maintenir l'ABI. Les en-têtes comme limits.h nécessitent à la fois des définitions spécifiques au compilateur et des constantes POSIX, créant une dépendance complexe entre compilateurs et bibliothèques système.

Source

lemon.rip — Lire l'original →