2017-01-28 27 views
1

LinuxからWindowsにいくつかのコードを移植しようとしていますが、問題が発生しています。LinuxからWindowsへの移植、 '__aligned__'

このライン:

uint8_t patch_[patch_size_*patch_size_] __attribute__ ((aligned (16))); 

は私与える:

Error C3861 'aligned': identifier not found 

Error C3646 '__attribute__': unknown override specifier 

これは、LinuxからWindowsへの問題ですか?どこでもalignedまたは__attribute__の定義は見つかりません。

(Iポートにしようとしているコードは次のとおりです。https://github.com/uzh-rpg/rpg_svo

+0

https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html – melpomene

答えて

6

それはMSVCの問題にgccです。 the documentationによると、同等のMSVC機能は__declspec(align(16))になります。

コンパイラがC++ 11をサポートしている場合は、alignas宣言を使用することもできます。

+0

ありがとうございました!私は試してみました: 'uint8_t patch_ [patch_size_ * patch_size_] __declspec(align(16));'それは '__declspec'に' 'a ';''を与えました。何が間違っているのですか? – anti

+1

@anti答えからリンクされている[MSDN記事](https://msdn.microsoft.com/en-us/library/83ythb65.aspx)によれば、 '__declspec'は宣言の前にあるので、何かになります'__declspec(align(32))uint8_t patch_ [patch_size_ * patch_size _];' – user4815162342

+0

ありがとう!完璧。 – anti

関連する問題