Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2017, 14:54   #1
Андрей Цапко
Пользователь
 
Регистрация: 10.04.2017
Сообщений: 66
По умолчанию Почему компиляторы разные.

Здравствуйте. Достаточно странный вопрос, но все же. Я работал с GCC, Dev-C++ и Visual Studio. Не сказать что много работаю со студией, но dev меня поразил немного. В основном пишу под linux и компилятор GCC хорошенько выскажется если я ему скормлю такой код:
Код:
if("Hello world"=="Hello world"){...}
в свою очередь dev-C++ выполнил это даже не выдав warning. Почему такая разница? Есть же стандарт.
Андрей Цапко вне форума Ответить с цитированием
Старый 28.09.2017, 15:16   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Dev-C++ это не компилятор. Это IDE, по умолчанию использует компилятор MinGW (порт GCC для винды).

Может не указан флаг для повышения количества варнингов или старая версия.

Цитата:
Сообщение от Андрей Цапко Посмотреть сообщение
Есть же стандарт
Вы смотрели его? Там написано, что компилятор должен выдавать варнинг в этой ситуации?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 28.09.2017, 15:34   #3
Андрей Цапко
Пользователь
 
Регистрация: 10.04.2017
Сообщений: 66
По умолчанию

Суть не в том, видел ли я стандарт или нет. Суть в том что стандарт есть, а компиляторы делают одно действие по разному.
Андрей Цапко вне форума Ответить с цитированием
Старый 28.09.2017, 15:46   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

И что? Стандарт не все описывает. Если чего-то нет в стандарте, то никто не мешает разработчикам компилятора это добавить у себя, просто не стоит надеяться, что оно будет во всех компиляторах. (но со временем может понравится и другим и в итоге попадет и в стандарт)

Ну и еще стандарт большой и не все фичи легко реализовать, вроде бы ни один компилятор не поддерживает его на 100%.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 28.09.2017, 15:48   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Это не противоречит стандарту. Это просто сравнение двух указателей. Да, разработчики стараются уменьшить выстрелов в ногу и придумывают всякие дополнения, типа доп. варнинг на такое или функции с _s на конце, или...
Так как таких вещей нет в стандарте, то реализовывать/не реализовывать, включать сразу/не включать и т.п. зависит от компилятора и его настроек/флагов вызова.
p51x вне форума Ответить с цитированием
Старый 28.09.2017, 16:54   #6
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Дак получается в одной системе компилятор подумает и сделает так, а в другой эдак?
Ведь читаешь книгу и там написано, что в такой то ситуации компилятор воспримет бла-бла-бла так, а если сделать так то бла-бла-бла этак.
А они еще и разные!!
KAMLS вне форума Ответить с цитированием
Старый 28.09.2017, 17:13   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Есть стандарт. Если компилятор заявляет, что его поддерживает, то должно выполняться что написано.
Все остальные украшательства и добавления - к авторами компилятора и документации на него.

Или по другому: есть книжка - стандарт, а есть его пересказ - реализация в компиляторе.
p51x вне форума Ответить с цитированием
Старый 28.09.2017, 17:22   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Все основное стандартное обычно одинаково во всех современных компиляторах.

Наличие поддержки новых фич стоит проверять в его документации или http://en.cppreference.com/w/cpp/compiler_support

Ну и всякие нестандартные расширения или напрямую API ОС избегать если волнует это.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 28.09.2017, 20:33   #9
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от KAMLS Посмотреть сообщение
подумает и сделает так, а в другой эдак
Это вы еще про undefined behavior не слышали...
waleri вне форума Ответить с цитированием
Старый 28.09.2017, 23:46   #10
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Это вы еще про undefined behavior не слышали...
Это он еще clang не видел. )))
Croessmah вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему разные значения вычисленной площади? msv131255 Помощь студентам 4 12.01.2017 20:23
Язык Си. Простой код, но не пойму почему выводятся разные матрицы. Ar2emiS Помощь студентам 4 17.11.2016 14:09
Разные компиляторы-разный результат! daria_dsm Общие вопросы C/C++ 3 08.05.2014 22:49
в чем отличие gpu core clock и gpu clock почему значания разные? gpu0 Компьютерное железо 0 10.06.2012 05:17
Разные компиляторы - разные результаты Кипящий чайник Общие вопросы C/C++ 3 16.07.2010 14:54