Salut Tous Je suis en train de faire une vérification préliminaire pour voir si mon système est big-endian ou little-endian. Dans LInux, il devrait être little-endian par défaut, mais je voulais juste vérifier. je 2 approchesendianess-check avec boost différer par rapport au résultat par petit code
- utilisant le support endian boost
- en utilisant un code que je trouve dans le web
J'utilise l'affirmation statique suivante
BOOST_STATIC_ASSERT(!BIG_ENDIAN);
qui échoue lors de la compilation , donc je pense que ..mmhh ... est mon gros système endian? Ce est l'erreur que j'ai
error: invalid application of ‘sizeof’ to incomplete type
boost::STATIC_ASSERTION_FAILURE<false>’
Si je fais un test en utilisant un code comme celui ci-dessous, il confirme que le système est peu endian. Savez-vous ce que je fais mal et j'utilise correctement la macro Boost?
bool is_big_endian_v3(){ long x = 0x34333231; char *y = (char *) &x; if(std::strncmp(y,"1234",4)){ printf("Big Endian"); return true; }else{ printf("Little Endian"); return false; } std::runtime_error ex("I cannot be here"); throw ex; }
désolé de vous déranger à nouveau, mais quand j'écris le code le compilateur me dit l'erreur suivante: 'BOOST_BIG_ENDIAN' n'a pas été déclaré dans cette portée.un appel de fonction ne peut pas apparaître dans une expression-constante template argument 1 est invalide. Je ne trouve pas non plus de mot-clé défini –
Avez-vous écrit '! Defined (BOOST_BIG_ENDIAN)' et pas seulement '! BOOST_BIG_ENDIAN'? Sinon, il est difficile de dire d'ici sans voir un petit exemple, mais autonome. – hkaiser
Salut. J'ai copié et collé exactement ce que vous avez écrit. Ci-dessous mon code dans le main.cpp #include –