2013-05-11 2 views
7

Каков наиболее надежный способ определить, использует ли архитектура одно или два дополнения в C++?Обнаруживать архитектуру комплемента или другого в C++?

+3

Если это единственные варианты, установите флажок '(-1) & 1'. –

+1

@BasileStarynkevitch Я работаю с гетерогенными суперкомпьютерными архитектурами, и хочу записать, что в начале каждого двоичного файла знать, совместима ли она с архитектурой, которая попытается ее прочитать. – Vincent

+0

не имеет большого значения сегодня? И в основном вы делаете сериализацию, и есть библиотеки, чтобы сделать это надежно сегодня ..... [s11n] (http://s11n.net/) и другие –

ответ

4

Вы не должны беспокоиться - там не слишком много из них дополняют машины там :)

Но проще всего может быть сравнивать «-1» с ~ 0.

+0

Разве это не поведение, определяемое реализацией? –

+6

@ R.MartinhoFernandes: Конечно. Они будут равны по сравнению с реализацией с двумя дополнениями, а не с реализациями с дополнениями (или знаками), и поэтому могут использоваться для проверки того, какое представление используется. –

+0

Можете ли вы обнаружить это с предварительным процессором во время компиляции. –