Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.87
Inferiym
1 / 7 / 3
Регистрация: 20.12.2011
Сообщений: 58
#1

С + + и Visual C + + и чем они отличаются? Есть ли их изучение взаимно дополняющее или это совсем разные языки? - C++

17.06.2012, 23:23. Просмотров 3796. Ответов 54
Метки нет (Все метки)

Просветите убогого =)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2012, 23:23     С + + и Visual C + + и чем они отличаются? Есть ли их изучение взаимно дополняющее или это совсем разные языки?
Посмотрите здесь:
C++ Сложить три числа, если они отличаются не больше чем на 2
Какие существуют виды условного оператора и чем они отличаются C++
C++ Часть чисел записывается с совсем противоположным знаком, чем они выводятся в консоли
а как вам это чем отличаются C++
Числа считаются равными если они отличаются не более, чем на (10^-12) / c++ / как реализовать эту возможность? C++
C++ STL list<> помогите есть затруднение Совсем не пойму в чем дело!!!
Начинать изучение с visual или с builder? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт CАвтор FAQ
17547 / 5785 / 370
Регистрация: 30.03.2009
Сообщений: 15,934
Записей в блоге: 26
25.06.2012, 01:07     С + + и Visual C + + и чем они отличаются? Есть ли их изучение взаимно дополняющее или это совсем разные языки? #31
Цитата Сообщение от Evg Посмотреть сообщение
А есть идеи о причинах?
Кажется, понял. В точке вызова будет создан объект, отвечающий за параметр. Но внутри функции объект уже нельзя корректно уничтожить, т.к. функция об этом объекте ничего не знает
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
25.06.2012, 01:12     С + + и Visual C + + и чем они отличаются? Есть ли их изучение взаимно дополняющее или это совсем разные языки? #32
Цитата Сообщение от DaskOFF Посмотреть сообщение
Каким же компилятором лучше пользоваться новичку, чтобы в будущем не было много проблем с тем, что в одном компиляторе что-то было в другом нету
если не сложно вариант платной(если таковая имеется) и бесплатно
Любым, просто документацией нужно пользоватся не специфичной для компилятора, и тогда пробем не должно быть.
Цитата Сообщение от Evg Посмотреть сообщение
Кажется, понял. В точке вызова будет создан объект, отвечающий за параметр. Но внутри функции объект уже нельзя корректно уничтожить, т.к. функция об этом объекте ничего не знает
Не понятно, не зря же есть va_end, который и так должен подчищать все что нужно перед возвратом.
Evg
Эксперт CАвтор FAQ
17547 / 5785 / 370
Регистрация: 30.03.2009
Сообщений: 15,934
Записей в блоге: 26
25.06.2012, 01:16     С + + и Visual C + + и чем они отличаются? Есть ли их изучение взаимно дополняющее или это совсем разные языки? #33
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Не понятно, не зря же есть va_end, который и так должен подчищать все что нужно перед возвратом.
va_end как бы подчищает стек (т.е. плоскую память), хотя я ещё ни разу не видел реализации, где va_end был чем-то, отличным от пустышки

Здесь проблема не в чистке, а в вызове деструкторов. В точке вызова va_end уже нет никакой информации о том, каких классов и сколько объектов было положено в стек в точке вызова
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
25.06.2012, 01:24     С + + и Visual C + + и чем они отличаются? Есть ли их изучение взаимно дополняющее или это совсем разные языки? #34
Цитата Сообщение от Evg Посмотреть сообщение
va_end как бы подчищает стек (т.е. плоскую память), хотя я ещё ни разу не видел реализации, где va_end был чем-то, отличным от пустышки
Здесь проблема не в чистке, а в вызове деструкторов. В точке вызова va_end уже нет никакой информации о том, каких классов и сколько объектов было положено в стек в точке вызова
Да, пожалуй, ты прав.
DaskOFF
25.06.2012, 01:30
  #35

Не по теме:

Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Любым, просто документацией нужно пользоватся не специфичной для компилятора, и тогда пробем не должно быть.
получается от компилятора не зависит на каких машинах программа будет работать или нет
все зависит от кода ?

ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
25.06.2012, 10:13     С + + и Visual C + + и чем они отличаются? Есть ли их изучение взаимно дополняющее или это совсем разные языки? #36
В C++0x есть изменения по пункту 5.2.2.7

When there is no parameter for a given argument, the argument is passed in such a way that the receiving function can obtain the value of the argument by invoking va_arg (18.10). [ Note: This paragraph does not
apply to arguments passed to a function parameter pack. Function parameter packs are expanded during
template instantiation (14.5.3), thus each such argument has a corresponding parameter when a function
template specialization is actually called. — end note ] The lvalue-to-rvalue (4.1), array-to-pointer (4.2), and
function-to-pointer (4.3) standard conversions are performed on the argument expression. An argument that
has (possibly cv-qualified) type std::nullptr_t is converted to type void* (4.10). After these conversions,
if the argument does not have arithmetic, enumeration, pointer, pointer to member, or class type, the
program is ill-formed. Passing a potentially-evaluated argument of class type (Clause 9) having a non-
trivial copy constructor, a non-trivial move constructor, or a non-trivial destructor, with no corresponding
parameter, is conditionally-supported with implementation-defined semantics.
If the argument has integral
or enumeration type that is subject to the integral promotions (4.5), or a floating point type that is subject
to the floating point promotion (4.6), the value of the argument is converted to the promoted type before
the call. These promotions are referred to as the default argument promotions.
Так что студия имеет на это право (если говорить о студии 2010 и выше).
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
25.06.2012, 20:52     С + + и Visual C + + и чем они отличаются? Есть ли их изучение взаимно дополняющее или это совсем разные языки? #37
Цитата Сообщение от ForEveR Посмотреть сообщение
Так что студия имеет на это право (если говорить о студии 2010 и выше).
Имеет право поддерживать передачу POD через эллипсис, но вот печатать std::string через %s уж точно нет.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
25.06.2012, 20:58     С + + и Visual C + + и чем они отличаются? Есть ли их изучение взаимно дополняющее или это совсем разные языки? #38
CyBOSSeR, Да, по идее не имеет. Причина.
http://stackoverflow.com/questions/1...-visual-studio
Evg
Эксперт CАвтор FAQ
17547 / 5785 / 370
Регистрация: 30.03.2009
Сообщений: 15,934
Записей в блоге: 26
26.06.2012, 10:20     С + + и Visual C + + и чем они отличаются? Есть ли их изучение взаимно дополняющее или это совсем разные языки? #39
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Имеет право поддерживать передачу POD через эллипсис, но вот печатать std::string через %s уж точно нет.
Цитата Сообщение от ForEveR Посмотреть сообщение
CyBOSSeR, Да, по идее не имеет. Причина.
http://stackoverflow.com/questions/1...-visual-studio
В общем-то то же самое, что я и говорил - просто звёзды встали соответствующим образом. Следующий код некорректен, но на intel'овских компиляторах будет работать:

C
#include <stdio.h>
 
/* Как бы MSVC'ная реализация std::string */
struct string
{
  char *s;
};
 
int main (void)
{
  struct string str;
  str.s = "abc";
  printf ("%s\n", str);
  return 0;
}
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,453
Записей в блоге: 17
26.06.2012, 11:50     С + + и Visual C + + и чем они отличаются? Есть ли их изучение взаимно дополняющее или это совсем разные языки? #40
В смысле будет корректный вывод или просто будет компилиться?
Evg
Эксперт CАвтор FAQ
17547 / 5785 / 370
Регистрация: 30.03.2009
Сообщений: 15,934
Записей в блоге: 26
26.06.2012, 11:57     С + + и Visual C + + и чем они отличаются? Есть ли их изучение взаимно дополняющее или это совсем разные языки? #41
Цитата Сообщение от Avazart Посмотреть сообщение
В смысле будет корректный вывод или просто будет компилиться?
На intel'е в 32-битном режиме будет корректный вывод (причём стабильный). На sparc v9, например, работать не будет, т.к. под ихние программные соглашения в данном примере звёзды в правильной ориентации не встанут
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,453
Записей в блоге: 17
26.06.2012, 13:01     С + + и Visual C + + и чем они отличаются? Есть ли их изучение взаимно дополняющее или это совсем разные языки? #42
Ну так этот же код работает и на VC и Builder, но стоит изменить на
C++
1
2
3
4
5
struct string
{
  int n;
  char *s;
};
И VC выдает ошибку, а Builder игнорит вывод.
Evg
Эксперт CАвтор FAQ
17547 / 5785 / 370
Регистрация: 30.03.2009
Сообщений: 15,934
Записей в блоге: 26
26.06.2012, 13:12     С + + и Visual C + + и чем они отличаются? Есть ли их изучение взаимно дополняющее или это совсем разные языки? #43
Ну дык я и говорю о том, что звёзды встали нужным образом. printf ожидал достать из списка неименованных аргументов указатель на строку. Но в данном участке памяти лежала структура, по счастливой случайности у которой первое поле представляло собой указатель на строку. Поскольку в памяти нет никаких границ между объектами, а лежат просто данные, то printf прочитал из нужного места стека 4 байта, трактовал их как указатель на строку и случилось чудо
nanex
22 / 16 / 2
Регистрация: 15.10.2011
Сообщений: 305
26.06.2012, 13:50     С + + и Visual C + + и чем они отличаются? Есть ли их изучение взаимно дополняющее или это совсем разные языки? #44
Цитата Сообщение от silent_1991 Посмотреть сообщение
Avazart,у мелкомягких и стандартный-то С++-компилятор стандарт порой нехило нарушает, что уж говорить об их собственной "доработке" языка...
Так все-таки где конкретика НЕХИЛОГО нарушения стандартов, и чем он в этом плане хуже других был. Заявить что-то и сказать, что не требуйте доказательств... Вы же не Бог, упаси меня Господь.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2012, 16:11     С + + и Visual C + + и чем они отличаются? Есть ли их изучение взаимно дополняющее или это совсем разные языки?
Еще ссылки по теме:
C++ в коде ниже есть ошибки. в чем они и как их устранить?
C++ std::map что такое и с чем это есть
Разные языки в одном файле C++
Visual C++ или C++ Builder в чем разница? C++
Чем отличаются компиляторы? C++

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт С++
4961 / 3037 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
26.06.2012, 16:11     С + + и Visual C + + и чем они отличаются? Есть ли их изучение взаимно дополняющее или это совсем разные языки? #45
nanex, конкретика была ниже, на счёт неверного разрешения перегрузки функций. Также на этом форуме обсуждались и более глубокие вещи, с которыми редко, но можно столкнуться (хотя я уже не помню, какие именно, но их хватило, чтобы я оставил этот компилятор). Хочется также сказать, что я не агитирую против использования мелкомягкого компилятора, так что не вижу смысла в подобных наездах.
Yandex
Объявления
26.06.2012, 16:11     С + + и Visual C + + и чем они отличаются? Есть ли их изучение взаимно дополняющее или это совсем разные языки?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru