![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]() Цитата:
но код намеренно не соответсвующий стандарту(исключения коды для компиляторов не соответствующих стандарту, наподобие Билдера) не являеться хорошим это точно. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
![]() |
![]() |
![]() |
#12 | |
Форумчанин
Регистрация: 01.07.2011
Сообщений: 423
|
![]() Цитата:
Если вы выбрали режим ANSII и используете не соответсвующие стандарту конструкции, или компиляттор Borland ведет себя не в соответсвии стандарту, тот этот код имеет неопредленное поведение, то есть является некорректным. Если же вы выбрали собвственный режим компиляции Borland, то естественно он компилирует в соответсвии с описанным в документации к этому режиму особенностями. Но это ужже к стандартну языка С++ не имеет отношения. То же самое и Microsoft. У них есть расширенный режим, который вы можете выбрать, но тем самым вы на свой страх и риск отклоняетесь от сттандарта. Такой код является не переносимым. Так что не путайте неопределенное поведение програмы и собственные расширения к языка разработчиков компиляторов. Например, есть такой С++, который называется управляемым. Но какое отношение оон имеет к стандартному языку С++? Это уже сама Microsoft решает, что в этот язык будет входить, а что нет. Здесь сттандарт для нее не закон. Вообще-то, я все ясно написал в предыдущем соообщении. Странно, что с первого раза вы не поняли, что там написано.
Со мной можно встретиться на www.clipper.borda.ru
|
|
![]() |
![]() |
![]() |
#13 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]()
Сыроежка, Я не ошибко то разбираюсь в настройках компилятора. Но думаю, коли студия сама генерит код void main, стало быть она за базар отвечает. И под самой студией проблем не возникнет.
Другое дело, что допустим, уже неоднократно сталкивался с ситуациями, когда template код отказывался компилироваться на других компиляторах. Причем, кода было написано уже много. И вот поди разбери, что gcc не нравится. В действительности, студия в отношении стандартна дамочка вполне себе фривольная. Можно запросто по ничайности сделать непортируемый код. Но если портабельность и не нужна - лично у меня никогда никаких проблем не возникало. |
![]() |
![]() |
![]() |
#14 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
я вам говорю что все относительно
![]() Цитата:
относительно стандарта он некоректный. относительно компилятора вполне нормальный. вот что именно я хотел уточнить. правда второй код не являеться хорошим по моему мнению. Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||
![]() |
![]() |
![]() |
#15 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]()
Ну вот навскидку: это один из таких известных и просто вопиющих фактов студийного беспредела.
Что характерно - я гуглил, из любопытства. Оказывается сий баг корпорации Зла известен, но они сознательно не стали его исправлять, потому что их "попросили". Вот так с лёгкой руки корпорации, баг превратился в фичу. В более поздних компиляторах (ну на 2010 точно знаю) он так же не был исправлен. Код:
Есть ещё куча всяких моментов, когда студийный код отказывался компилироваться под другими компиляторами. Но я их приводить не буду. Ибо надо вспоминать. А вот кстати, ещё пример (вот это уже реальные попандосы, я не однократно на такой канители горел): код в 2008 студии прекрасно компилируется: Код:
А вот правильные решение: http://liveworkspace.org/code/035a91...f7d4e4410f59c7 Оно показывает причину, по которой православный gcc не хотел компилить первый вариант: он не понимает что за фред-прототип ему такой кормят. Это ж насколько удобнее писать код в студии, но насколько раздолбайно она относится к стандарту в итоге! С ума сойти.. а так напишешь километр кода, потому править его замучаешься, что бы его другие компиляторы тоже кушать могли... Вот конечно ещё более простое и православное решение: http://liveworkspace.org/code/9f9dfb...f27b1ef78a53df В общем, нет-нет а переодически надобно студийный код под другими компиляторами пускать, что бы не попасть в просак студийного задолбайства)) Последний раз редактировалось _Bers; 03.02.2012 в 23:06. |
![]() |
![]() |
![]() |
#16 |
Форумчанин
Регистрация: 18.02.2012
Сообщений: 155
|
![]() |
![]() |
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
функция | sanya94 | Общие вопросы C/C++ | 3 | 24.11.2010 16:32 |
функция if | IRMA230 | Microsoft Office Excel | 12 | 02.06.2010 22:43 |
функция | loloverg | Помощь студентам | 0 | 18.05.2010 20:12 |
Функция | Lemo | Помощь студентам | 1 | 02.12.2008 00:24 |
одна функция потока, а другая функция - член класса запускающего этот поток | Дмитрий_Ч | Общие вопросы C/C++ | 2 | 27.09.2007 08:50 |