Привет всем
Я делаю некоторые предварительные проверки, чтобы увидеть, является ли моя система с прямым порядком байтов или с прямым порядком байтов.
В LInux по умолчанию он должен быть прямым порядком байтов, но я просто хотел перепроверить.
Я использовал 2 подхода
- с использованием поддержки Boost Endian
- используя некоторый код, который я нашел в сети
Я использовал следующее статическое утверждение
BOOST_STATIC_ASSERT(!BIG_ENDIAN);
, который не срабатывает во время компиляции, так что я думаю ... ммхх ... мой системный порядок байтов?
Это ошибка у меня
error: invalid application of ‘sizeof’ to incomplete type
boost::STATIC_ASSERTION_FAILURE<false>’
Если я выполню тест с использованием некоторого кода, подобного приведенному ниже, он подтвердит, что система имеет младший порядок.
Знаете ли вы, что я делаю неправильно, и правильно ли я использую макрос 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;
}