2010-02-21 3 views
3

J'ai un énorme problème d'adaptation du code dans C++ Builder.Le problème de l'adaptation du code MSVC++ pour C++ Builder- __declspec (align (n))

Quel est l'équivalent dans C++ Builder pour __declspec (align (n))? Je ne parle pas du #pragma pack ([show] | [push | pop] [, identifier], n). J'ai besoin de quelque chose pour la macro.

J'ai un problème avec adopter un code ci-dessous (en particulier pour __declspec(align(n))):

#elif defined(_MSC_VER) 

#define LJ_NORET __declspec(noreturn) 
#define LJ_ALIGN(n) __declspec(align(n)) 
#define LJ_INLINE __inline 
#define LJ_AINLINE __forceinline 
#define LJ_NOINLINE __declspec(noinline) 
#if defined(_M_IX86) 
#define LJ_FASTCALL __fastcall 
#endif 

static LJ_AINLINE uint32_t lj_ffs(uint32_t x) 
{ 
    uint32_t r; _BitScanForward(&r, x); return r; 
} 

static LJ_AINLINE uint32_t lj_fls(uint32_t x) 
{ 
    uint32_t r; _BitScanReverse(&r, x); return r; 
} 

#define lj_bswap(x) (_byteswap_ulong((x))) 

#else
+0

je ne suis pas sûr que je poste comme un commentaire ... #pragma align? – n00b

+0

Je dois faire une macro en utilisant des mots-clés, plutôt que pragma – HNB

Répondre

1

Le [[aligner]] attribut est pas encore implémenté dans C++ Builder. Je ne suis pas sûr où c'est dans la liste des priorités pour le support de C++ 0x.

+0

Dans ce cas, je dois manuellement modifier les macros "LJ_ALIGN" suivantes à "# pragma pack ...". Merci! – HNB

Questions connexes