Et utiliser une extension VC non portable à la place?

Clang accepte aussi
__attribute__((packed)) si je ne me trompe; parmi les compilateurs courants, il n'y a que VC qui n'accepte que ses propres extensions.

Quant aux compilateurs moins courants, ils ne gèrent pas forcément ni l'une ni l'autre syntaxe, parce que ni l'un ni l'autre n'est du C standard.