вариации побитового оператора в C ++ - PullRequest
1 голос
/ 14 июня 2009

Я читаю C ++ предоставляет дополнительные операторы к обычным &, |, и! которые означают «и», «или» и «нет» соответственно, плюс они имеют свойства автоматического короткого замыкания, где это применимо.

Я хотел бы использовать эти операторы в своем коде, но компилятор интерпретирует их как идентификаторы и выдает ошибку.

Я использую Visual C ++ 2008 Express Edition с пакетом обновления 1 (SP1). Как активировать этих операторов для использования в моем коде?

Ответы [ 2 ]

4 голосов
/ 14 июня 2009

Если вы хотите иметь версии ключевых слов 'and', 'or', 'xor' и т. Д. Операторов, доступных в MSVC ++, то вы должны либо использовать опцию '/Za' чтобы отключить расширения или вы должны включить iso646.h.

2 голосов
/ 14 июня 2009

Традиционное C ++ правописание [*] (как и в C) - && для «логического», короткое замыкание и , || для «логического», короткое замыкание или . ! "логично" не (конечно, оно не замыкается накоротко: что бы это означало ?! -). Битовые версии: &, |, ~.

В соответствии со стандартом C ++, написанные вами слова (and, or и т. Д.) Также должны быть реализованы, но, очевидно, популярные компиляторы не подчиняются этому правилу. Однако вы должны быть в состоянии #include <ciso646> или #include <iso646.h> взломать это с помощью макросов - см. эту страницу , и если ваш любимый компилятор пропускает эти заголовочные файлы, просто создайте их очевидным способом, то есть

#define and &&
#define or ||

и так далее. (Благодарность и благодарность комментаторам за то, что они заставили меня лучше изучить проблему и выяснить это!)

...