Je porte un code qui fonctionne parfaitement sous Linux sur Windows Visual C ++. J’ai ce code sous Linux:
struct exif_desc { uint16_t tag; uint16_t type; uint32_t length; uint32_t value; } __atsortingbute__((__packed__));
Je reçois une erreur sur windows:
'__packed__' : undeclared identifier
Je me demande si je peux corriger cette erreur en utilisant
#pragma pack(1)
y a-t-il une différence entre eux? Existe-t-il une syntaxe pouvant être utilisée sous Linux et Windows pour cet atsortingbut?
__atsortingbute__
est une extension GCC, spécifique à GCC (et à d’autres compilateurs qui tentent d’être compatibles avec GCC).
#pragma pack
est à l’origine une extension spécifique au compilateur Visual C ++. Comme indiqué par les commentateurs, il a également été implémenté dans GCC pour la compatibilité VC ++.
Normalement, vous ne pouvez pas utiliser des extensions dans un compilateur dans un autre compilateur. Cas: __atsortingbute__
n’existe pas en tant qu’extension dans le compilateur Visual C ++.