2017-01-28 2 views
1

Je tente de porter du code de Linux vers Windows, et j'ai des problèmes.Portage C++ de Linux à Windows, '__aligned__'

Cette ligne:

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

me donne:

Error C3861 'aligned': identifier not found 

Error C3646 '__attribute__': unknown override specifier 

Est-ce un problème Linux à Windows? Je ne peux pas trouver une définition pour aligned ou __attribute__ n'importe où.

(Le code que je suis en train de port est: https://github.com/uzh-rpg/rpg_svo)

+0

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

Répondre

6

Il est une question gcc à MSVC. Selon the documentation., La fonctionnalité MSVC équivalente serait __declspec(align(16)).

Si votre compilateur prend en charge C++ 11, vous pouvez également utiliser la déclaration alignas.

+0

Merci! J'ai essayé: 'uint8_t patch_ [patch_size_ * patch_size_] __declspec (align (16));' et il me donne: 'attendu a ';'', sur '__declspec'. Qu'est-ce que je fais mal? – anti

+1

@anti Selon l'article [MSDN] (https://msdn.microsoft.com/en-us/library/83ythb65.aspx) lié à la réponse, '__declspec' va avant la déclaration, donc ce serait quelque chose comme '__declspec (align (32)) uint8_t patch_ [patch_size_ * patch_size _];' – user4815162342

+0

Merci! Parfait. – anti