Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446

Недоработка в компиляторе Visual Studio. <iso646.h>/<ciso646>

13.12.2014, 01:42. Показов 1965. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Почему это не работает в Visual Studio (в других компиляторах всё работает)?
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
int main()
{
    int a, b;
    a = 3;
    b = 5;
    if (a < b and
        a < 4)
        printf("OK\n");
    return 0;
}
А так работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
int main()
{
    int a, b;
    a = 3;
    b = 5;
    if (a < b &&
        a < 4)
        printf("OK\n");
    return 0;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.12.2014, 01:42
Ответы с готовыми решениями:

Рекурсия в компиляторе от Visual Studio 2013
Здравствуйте, есть функция которая счиет косинус рекурсивно: double myCos(double x, int n) { static int i = 1; return ...

Установка C++ Redistributable Visual Studio 2017 и Visual C++ для Visual Studio 2015
Доброго дня. Пытаюсь изучить PHP. Решил установить сервер локальный. В инструкции сказано: &quot;Ещё нам нужен файл C++...

Почему у меня MASM32 не правильно работает в Visual studio когда уже установлен внутри настройки visual studio code ?
Почему у меня MASM32 не правильно работает в Visual studio когда уже установлен внутри настройки visual studio code ?

10
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
13.12.2014, 01:57
Dennis Ritchie, господь в Microsoft так пожелал :-) может и есть какая-то опция, чтобы включить, лично я не в курсе. and, or, bitor и т.д. прописаны в стандарте как альтернативные токены
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
13.12.2014, 02:01
Лучший ответ Сообщение было отмечено Dennis Ritchie как решение

Решение

Dennis Ritchie, добавь #include <iso646.h>
2
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
13.12.2014, 02:05
DrOffset, они там как макросы прописаны чтоли?
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
13.12.2014, 02:10
Цитата Сообщение от Croessmah Посмотреть сообщение
они там как макросы прописаны чтоли?
Именно. Это, кстати, прямое нарушение стандарта. Однако, сам этот заголовочный файл в стандарте есть. Но по стандарту его подключение не должно определять никаких макросов, но VS определяет.
0
18 / 18 / 6
Регистрация: 02.07.2011
Сообщений: 67
13.12.2014, 02:11
Здесь написано, что да: http://www.cplusplus.com/reference/ciso646/.
1
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
13.12.2014, 02:12
DrOffset, я о том же:
Identifiers that are keywords or operators in C++ shall not be defined as macros in C++ standart library headers174

174) In particular, including the standart headers <iso646.h> or <ciso646> has no effect
1
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
13.12.2014, 02:20
17.6.1.2/7
Identifiers that are keywords or operators in C++ shall not be defined as macros in C++ standard library headers.
и сноска 176
In particular, including the standard header <iso646.h> or <ciso646> has no effect.
Добавлено через 6 минут
Мутный у них этот заголовок:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#if !defined(__cplusplus) || defined(_MSC_EXTENSIONS)
 #define and    &&
 #define and_eq &=
 #define bitand &
 #define bitor  |
 #define compl  ~
 #define not    !
 #define not_eq !=
 #define or     ||
 #define or_eq  |=
 #define xor    ^
 #define xor_eq ^=
#endif /* !__cplusplus || _MSC_EXTENSIONS */
Вот !defined(__cplusplus) часть говорит о том, что стандарт они формально не нарушили в этой части. Однако без этого h-файла альтернативные токены не работают. А в С++ доступны в качестве расширений MSVC (_MSC_EXTENSIONS), т.е. если я сейчас отключу расширения в компиляторе, то получу отсутствие поддержки этих токенов в любом виде. Как-то так.

Добавлено через 1 минуту

Не по теме:

Croessmah, у нас с тобой разные чуть версии стандартов :)

0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
13.12.2014, 02:27
DrOffset, суть всё равно одна. Это я с черновика C++11 переписал. Другого сейчас нет под рукой
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
13.12.2014, 11:35
Для чего это превращение в Pascal?
2
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
13.12.2014, 12:46
Цитата Сообщение от nmcf Посмотреть сообщение
Для чего это превращение в Pascal?
Имнип, все эти синонимы для булевских операций вводились как и триграфы в давние времена из-за проблем кодировок.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.12.2014, 12:46
Помогаю со студенческими работами здесь

В коде возникли ошибки при переходе с Visual studio 2013 на Visual studio 2017
Добрый день, решил попробовать поменять свою 2013 студию на 2017 и заметил такую проблему, при открытии проектов 13 года и даже копирования...

Visual Studio 2005 и Visual Studio 2008 сильно ли они отличаются друк от друга?
привет ребята:) вот у меня есть Visual Studio 2005 и Visual Studio 2008 возник вопрос сильно ли они отличаются друк от друга? пробывал...

Имеются ли отличия в компиляторах у сред разработки Visual Studio 2006 и Visual Studio 2015 ?
скажите а где найти среду 2006 года? или можно использовать 2015 год?

Будет ли всегда программа написанная на Visual Studio 2010 открываться в Visual Studio 2003 ?
Будет ли всегда программа написанная на Visual Studio 2010 открываться в Visual Studio 2003 ?

Зачем для создания формы на Angular использовать Visual Studio и Visual Studio Code?
Мне нужно написать форму на ангуляре, которая будет выполнять Select, Insert,Delete из базы данных. Нашла видео, в котором показывают...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru