2017-01-28 174 views
1

我試圖將一些代碼從Linux移植到windows,並遇到麻煩。將C++從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__的定義。

(我想端口的代碼是:https://github.com/uzh-rpg/rpg_svo

+0

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

回答

6

這是一個gcc到MSVC的問題。根據the documentation,等效的MSVC特徵將是__declspec(align(16))

如果你的編譯器支持C++ 11,你也可以使用alignas聲明。

+0

謝謝!我試過了: uint8_t patch_ [patch_size_ * patch_size_] __declspec(align(16));'並且它給了我:'expect a';'',在'__declspec'上。我究竟做錯了什麼? – 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