2010-02-21 23 views
3

我有一個將代碼調整爲C++ Builder的巨大問題。適用於C++ Builder的MSVC++代碼的問題__declspec(align(n))

C++ Builder中用於__declspec(align(n))的等價物是什麼?我不是指#pragma pack ([show] | [push | pop] [, identifier], n)。我需要一些宏。

我有采用以下代碼(特別是對於__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

即時通訊不能確定,所以我發表評論... #pragma align? – n00b 2010-02-21 23:53:30

+0

我需要使用關鍵字來做宏,而不是編注 – HNB 2010-02-22 01:08:17

回答

1

的〔〔對齊]]屬性尚未在C++生成器實現。我不確定這是C++ 0x支持的優先級列表。

+0

在這種情況下,我必須手動將以下宏「LJ_ALIGN」更改爲「#pragma pack ...」。謝謝! – HNB 2010-02-22 05:29:45