![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 0 Всего: 52 |
Я предлогаю закрепить эту тему где-нибудь на видно месте и чтобы люди, которые только начали изучать язык и не могут пока осилить "hello world" или не понимают почему теперь iostream.h указывается без *.h - отписывали свои вопросы тут. Согласитесь - большая часть таких людей не пользуется поиском, и создаёт темы с элементарными вопросами и начинается перепалка с модераторами / ругань / баны / обиды / сопли намотанные на кулак и всё такое прочее
![]() А тут без злости так сказать будем отвечать на их вопросы ![]() -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
tdebugger |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 20.1.2007 Репутация: нет Всего: 4 |
У меня такой вопрос - почему теперь iostream.h указывается без *.h, я серьезно, раньше я как-то не обращал на это внимания, а раз тут такое дело, не грех и спросить....
--------------------
ТЕХНОЛОГИЯ "JAVA" НЕ ПРЕДНАЗНАЧЕНА ДЛЯ УПРАВЛЕНИЯ ЯДЕРНЫМИ УСТАНОВКАМИWindows98 License.txt |
|||
|
||||
DjoNIK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 28.9.2006 Где: Питер/Георгиевск Репутация: 4 Всего: 5 |
По стандарту *.h - Си-шный стиль, в то время как в С++ - либо *.hpp, либо вообще без расширения.
-------------------- - Плесни-ка мне холодного кипятку. - Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды? - Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку. (разговор петербуржца и москвича) |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
DjoNIK,
а разве стандартом оговорены расширения файлов? ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
DjoNIK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 28.9.2006 Где: Питер/Георгиевск Репутация: 4 Всего: 5 |
MAKCim, не по стандарту компилятора, конечно, это в принципе невозможно
![]() По одному из принятых стандартов (по-крайней мере я так читал у авторитетного источника) -------------------- - Плесни-ка мне холодного кипятку. - Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды? - Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку. (разговор петербуржца и москвича) |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 0 Всего: 52 |
Вроде по последнему стандарту принято, что заголовочные файлы не должны иметь расширения.
Правда чем это обусловлено - не ясно. -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
FiMa1 |
|
||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 23.9.2006 Репутация: 5 Всего: 6 |
Copy/Paste (Шилдт Г. Самоучитель С++):
Новые заголовки в программах на C++ Как вам должно быть известно из опыта программирования на С, при использовании библиотечной функции в программу необходимо включить заголовочный файл. Это делается с помощью инструкции #include. Например, при написании программ на языке С заголовочным файлом для функций ввода/вывода является файл stdio.h, который включается в программу с помощью следующей инструкции:
Здесь stdio.h — это имя файла, который используется функциями ввода/вывода, и предыдущая инструкция заставляет компилятор включить указанный файл в вашу программу. В первые несколько лет после появления C++ в нем использовался тот же стиль оформления заголовков, что и в С. Для совместимости с прежними программами в языке Standard C++ этот стиль по-прежнему поддерживается. Тем не менее при работе с библиотекой Standard C++ в соответствии с новым стилем вместо имен заголовочных файлов указываются стандартные идентификаторы, по которым компилятор находит требуемые файлы. Новые заголовки C++ являются абстракциями, гарантирующими объявление соответствующих прототипов и определений библиотеки языка Standard C++. Поскольку новые заголовки не являются именами файлов, для них не нужно указывать расширение .h, а только имя заголовка в угловых скобках. Ниже представлены несколько заголовков, поддерживаемых в языке Standard C++:
Такие заголовки по-прежнему включаются в программу с помощью инструкции #include. Единственным отличием является то, что новые заголовки совершенно не обязательно являются именами файлов. Поскольку С++ содержит всю библиотеку функций С, по-прежнему поддерживается стандартный стиль оформления заголовочных файлов библиотеки С. Таким образом, такие заголовочные файлы, как stdio.h и ctype.h все еще доступны. Однако Standard C++ также определяет заголовки нового стиля, которые можно указывать вместо этих заголовочных файлов. В соответствии с версией C++ к стандартным заголовкам С просто добавляется префикс с и удаляется расширение .h. Например, заголовок math.h заменяется новым заголовком C++ <cmath>, а заголовок string.h — заголовком <cstring>. Хотя в настоящее время при работе с функциями библиотеки С допускается включать в программы заголовочные файлы в соответствии со стилем С, такой подход не одобряется стандартом языка Standard C++. (То есть, он не рекомендуется.) По этой причине во всех имеющихся в книге инструкциях #include используется новый стиль написания заголовков программ. Если ваш компилятор для функций библиотеки С не поддерживает заголовки нового стиля, просто замените их заголовками в стиле С. Поскольку заголовки нового стиля появились в C++ совсем недавно, во многих и многих прежних программах вы их не найдете. В этих программах в соответствии со стилем С в заголовках указаны имена файлов. Ниже представлен традиционный способ включения в программу заголовка для функций ввода/вывода:
Эта инструкция заставляет компилятор включить в программу заголовочный файл iostream.h. Как правило, в заголовках прежнего стиля вместе с расширением .h используется то же имя, что и в соответствующих им новых заголовках. Как уже отмечалось, все компиляторы C++ поддерживают заголовки старого стиля. Тем не менее такие заголовки объявлены устаревшими и не рекомендуются. Именно поэтому в книге вы их больше не встретите. ! Несмотря на повсеместное распространение в программах заголовков старого стиля, они считаются устаревшими. Библиотека <iostream.h>не является частью стандарта языка. С другой стороны библиотека <iostream> входит в стандарт. Библиотека <iostream> реализована в виде объектно-ориентированной иерархии классов, поддерживает как основные так и расширенные (unicode) символы. С другой стороны <iostream.h> ограничена исключительно символами char (символы ASCII). Кроме того, целесообразно использовать <iostream>, если, разумеется, ваш компилятор поддерживает это, т.к. все компоненты <iostream> находятся в пространстве имен (namespace) std, в то время, как компоненты <iostream.h> располагаются в глобальном пространстве. Есть три основных механизма использования библиотеки <iostream>:
Это сообщение отредактировал(а) FiMa1 - 11.10.2007, 10:48 |
||||||||||||
|
|||||||||||||
FiMa1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 23.9.2006 Репутация: 5 Всего: 6 |
Какой компилятор выбрать?
Компиляторы и IDE для C++ Какую книгу выбрать? Литература по C++ Что такое: STL, MFC, ATL, API, WinAPI, .Net, VCL? Что такое STL... Что такое MFC... Что такое ATL... Что такое API... Что такое WinAPI... Что такое .NET... Что такое VCL... Итог: да и воздастся ищущему... ДРУЗЬЯ, ПРЕДЛАГАЮ ИЗБЕГАТЬ ВОСТОРЖЕННЫХ И БЛАГОДАРСТВЕННЫХ РЕПЛИК В ДАННОМ ТРЕДЕ, ДАБЫ НЕ ПЕРЕГРУЖАТЬ ЕГО ЛИШНЕЙ ИНФОРМАЦИЕЙ, ЕСЛИ ТРЕД ДЕЙСТВИТЕЛЬНО РЕШЕНО ЗАКРЕПИТЬ! СПАСИБО И БЕЗ ОБИД ![]() Это сообщение отредактировал(а) FiMa1 - 11.10.2007, 13:41 |
|||
|
||||
tdebugger |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 20.1.2007 Репутация: нет Всего: 4 |
Спасибо за бурную реакцию, однако появились вопросы по некоторым нюансам, как получу доступ к IDE, проверю, уточню и выскажу...
--------------------
ТЕХНОЛОГИЯ "JAVA" НЕ ПРЕДНАЗНАЧЕНА ДЛЯ УПРАВЛЕНИЯ ЯДЕРНЫМИ УСТАНОВКАМИWindows98 License.txt |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
to FiMa1 будте справедливы киньте ссылку еще на VCL!
|
|||
|
||||
chelser |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 9.10.2007 Репутация: нет Всего: нет |
ценная информация
спасибо |
|||
|
||||
FiMa1 |
|
||||||||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 23.9.2006 Репутация: 5 Всего: 6 |
В чем отличие ссылки от указателя? Как использовать ссылки?
В C++ есть элемент, родственный указателю — это ссылка (reference). Ссылка является скрытым указателем и во всех случаях, и для любых целей ее можно употреблять просто как еще одно имя переменной. Ссылку допустимо использовать тремя способами:
Наиболее распостраненное применение ссылки — передача ее в качестве параметра функции. Что бы понять, что такое параметр-ссылка и как это работает, рассмотрим программу, в которой параметром является указатель, а не ссылка:
Здесь функция foo() загружает целое значение 100 по адресу, который обозначен указателем p. В данной программе функция foo() вызывается из функции main() с адресом переменной i, по которому она располагается в памяти. Таким образом, после выполнения функции foo() переменная i будет содержать число 100. В этой программе показано, как использовать указатель для реализации механизма передачи параметра посредством вызова по ссылке (call by reference). В программах С такой механизм является единственным спосо бом добиться вызова функции по ссылке. Запомните в языке Си ссылок нет! Однако в C++ с помощью параметра-ссылки можно полностью автоматизировать весь процесс. Чтобы узнать, как это сделать, изменим предыдущую программу. В ее новой версии используется параметр-ссылка:
Проанализируйте эту программу! Во-первых, для объявления параметра-ссылки перед именем переменной ставится знак амперсанда (&). Таким образом, переменная r объявляется параметром функции foo(). Теперь, поскольку переменная r является ссылкой, больше не нужно и даже неверно указывать оператор ‘*’. Вместо него всякий раз, когда переменная п упоминается внутри функции f(), она автоматически трактуется как указатель на аргумент, используемый при вызове функции f(). Это значит, что инструкция
фактически помещает число 100 в переменную, используемую при вызове функции foo(), каковой в данном случае является переменная i. Далее, при вызове функции f() перед аргументом не нужно ставить знак &. Вместо этого, поскольку функция f() объявлена как получающая параметр-ссылку, ей автоматически передается адрес аргумента. Теперь важно запомнить следующее: значение адреса, на который указывает ссылка, вы изменить не можете (в этом поведение ссылок схоже с поведением константных указателей). Например, если в программе, где используется параметр-ссылка поместить в тело функции foo инструкцию:
Вместо инкрементирования адреса, как это было бы с использованием указателей эта инструкция инструкция инкрементирует значение переменной (в данном случае это переменная i). Кроме того, ссылка должна быть инициализирована в месте ее объявления, так если вы напишите где-то в программе, к примеру:
то непременно получите ошибку вида “references must be initialized” (в этом можно найти еще одно сходство ссылок с константными указателями). Параметры-ссылки имеют несколько преимуществ по сравнению с аналогичными (более или менее) альтернативными параметрами-указателями. Во-первых, с практической точки зрения нет необходимости получать и передавать в функцию адрес аргумента. При использовании параметра ссылки адрес передается автоматически. Во-вторых, по мнению многих программистов, параметры-ссылки предлагают более понятный и элегантный интерфейс, чем механизм указателей. В-третьих, как вы узнаете потом, при передаче объекта функции через ссылку копия объекта не создается. Это уменьшает вероятность ошибок, связанных с построением копии аргумента и вызовом ее деструктора. ВОЗВРАЩЕНИЕ ПАРАМЕТРОВ ИЗ ФУНКЦИЙ ПОСРЕДСТВОМ ССЫЛОК Фактически ничего особенного здесь нет, реализуется это также как и в случае с получением параметров посредством ссылок. Для начала рассмотрим пример с использованием указателей для возврата значений из функций:
Но функции могут возвращать и ссылки, однако здесь надо быть осторожным! Если возвращение ссылки переменной объявлено в вызываемой функции, переменная должна быть объявлена внутри этой функции как static. В противном случае ссылка адресуется автоматической переменной, которая после завершения функции уничтожается; в таком случае говорят, что переменная «не определена» и поведение программы непредсказуемо. Так для следующего примера
вы получите следующее предупреждение: “ returning address of local variable or temporary”. Да, результат выполнения такой программы чреват печальными последствиями, если к моменту использования значения переменной var, располагающееся по адресу возвращаемому функцией foo, значение будет перезаписано чем-либо другим. Таким образом вы должны объявить var так
Обратите внимание, что для возврата адреса переменной var из функции также не нужно использовать оператора взятия адреса ‘&’, т.к. функция изначально была объявлена как возвращающая ссылку на переменную целого типа. Соответственно и в main оператора разыменования ‘*’ писать не нужно. НЕЗАВИСИМЫЕ ССЫЛКИ Хотя они обычно и не используются, вы можете создавать независимые ссылки (independent reference). Независимая ссылка — это ссылка, которая во всех случаях является просто другим именем переменной. Поскольку ссылкам нельзя присваивать новые значения, независимая ссылка должна быть инициализирована при ее объявлении. ! Большинство программистов чувствует ненужность независимых ссылок, они добавляют неразберихи в программу. Как правило, их следует избегать. Пример программы с независимой ссылкой:
В этой программе независимая ссылка ref служит другим именем переменной х. С практической точки зрения ref и х идентичны. В завершении подведем некоторые ограничения, которые распостраняются на ссылки:
|
||||||||||||||||||
|
|||||||||||||||||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
таких вопросов ну очень много разных возникнуть может. Толку если все ответы на них в кучу свалить? Если чел поленился книгу почитать, он станет читать километровую тему? Сомневаюсь.
Для элементарных вопросов есть FAQ. Если чел поленился туда заглянуть, то почему он станет читать эту тему? Rickert, предложение хорошее, доброе, но только велосипед уже изобретен: FAQ, статьи, исходники... |
|||
|
||||
FiMa1 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 23.9.2006 Репутация: 5 Всего: 6 |
Первое что пришло в голову... Ну и так, если все ж останется: Чем отличается константный указатель от константного указателя на константу? Константный указатель- для такого указателя невозможно изменить адрес на который он указывает. Константный указатель на константу - для такого указателя невозможно изменить ни адрес на который он указывает, ни значение, которое находится по данному адресу в памяти. Для примера просмотрите приведенный ниже код:
|
||||
|
|||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 0 Всего: 52 |
zkv, понимаешь, не в обиду будет сказано дзайнеру и админам, но раздел FAQ - незаметен.
Если бы ссылка на него висела в разделе "C/C++ общие вопросы" - то народ бы юзал. имхо. -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
FiMa1, ты серьёзно?
ты написал много, но честно говоря ценность этого весьма сомнительна... Тема отличия указателей и ссылок не раскрыта. Если уж пишешь о передаче ссылок в функции, то где тема о константных ссылках и вообще зачем использовать передачу по ссылке и константной ссылке, так что опять незачет. Не раскрыта тема "Зачем возвращать ссылки из функций". После раскрытия ее становится ясно, что это применяется в конкретных случаяхи и в общем случае возвращать ссылки из функций не подходящее решение. Если уж советовать возвращать ссылку на static переменную, то нужно следом писать статью о том насколько это некрасиво и чем черевато.
Не помню кто сказал |
|||
|
||||
archimed7592 |
|
||||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Давайте, давайте, скопипастити сюда Страуструпа, Шилдта и прочих писателей для новичков... Желательно в полном объёме
![]() Думаю, 90% всех подобных вопросов освещены в C++ FAQ LITE, правда он на английском, что новичка не всегда устраивает... Да с новичками наверное всегда проблемы будут... Ну не знают они обычаев форума, не обучены нэтикету.
Твои сновидения - это авторитетный источник ![]()
По последнему(и предпоследнему ![]() Обусловлено, думаю, тем же, что и зарезервированные идентификаторы - отсутствием коллизий имён файлов. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
||||
|
|||||
tdebugger |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 20.1.2007 Репутация: нет Всего: 4 |
так вот насчет абстракций - файл iostream таковым не является, потому что он СУЩЕСТВУЕТ ! Короче, мои идеи по этому поводу - "стандартные идентификаторы" будут реализованы в будущем, а сейчас для совместимости используются имена реальных файлов... --------------------
ТЕХНОЛОГИЯ "JAVA" НЕ ПРЕДНАЗНАЧЕНА ДЛЯ УПРАВЛЕНИЯ ЯДЕРНЫМИ УСТАНОВКАМИWindows98 License.txt |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Имеет право не существовать. Это интимное дело конкретной реализации(компилятора) - как и что организовать, чтобы её(реализации) поведение полностью соответствовало Стандарту. Добавлено через 1 минуту и 16 секунд А зачем ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
FiMa1 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 23.9.2006 Репутация: 5 Всего: 6 |
Отличия указателей от ссылок
Когда следует возвращать ссылки и делать их константными? Внимательно читаем здесь Константные ссылки и указатели, константные методы классов Когда использовать передачу константных ссылок? Объект, как правило, передается по константной ссылке для предотвращения его изменения в процессе передачи и обработки получателем. Кроме того такой подход позволяет избежать копирования всех полей объекта класса, как это было бы с передачей его по значению и, следовательно, избежать лишних затрат. Аналогичную функциональность можно реализовать и с применением константных указателей на константы, но это потребует наличия специального синтаксиса, присущего для указателей. В общем примерно в том духе. А вообще ДА И ВОЗДАСТСЯ ИЩУЩЕМУ! |
||||
|
|||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
FiMa1, ты сам эти мануалы пишешь
![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
ссылка намного сильнее отличается от указателя чем тебе кажется различия ссылок и указателей |
|||
|
||||
FiMa1 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 23.9.2006 Репутация: 5 Всего: 6 |
И да и нет.. не люблю/некогда изобретать велосипед, если что-то есть в инете на тему, то анализ найденного, выборка, copy, небольшое редактирование, дополнение и paste. Я ведь к чему и подвожу ДА И ВОЗДАСТСЯ ИЩУЩЕМУ ![]() Новички, вы просто не льстите себе, в 99,9% случаев вы не нашли новой закономерности/ошибки компилятора.... и, наверняка, вопрос ваш не оригинален, уже не раз поднимался и был решен. 1. Обязательно прочитайте следующее: Вредные советы Как правильно задавать вопросы 2. Обязательно пробуйте искать существующее решение вашего вопроса: Vingrad Search Поисковые системы 3. Никогда не задавайте следующих вопросов: - Что лучше С или С++ и с чего начать? - Где взять книги по С/С++ и какие? - Я новичок в программировании, дайте мне задание... Ответы для себя и дискуссии на эти вопросы вы сможете найти в любом месте Интернета.
Fazil6, большое спасибо! Обязательно прочту. Это сообщение отредактировал(а) FiMa1 - 12.10.2007, 11:46 |
||||
|
|||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Ну, во-первых, если копипастишь, то обязательна ссылка на оригинал(ибо не воздастся плагиатчику...), а, во-вторых, из моего опыта общения с тобой мне показалось, что тебе рановато мануалы писать... -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
FiMa1 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 23.9.2006 Репутация: 5 Всего: 6 |
Ссылки всегда присутствуют...
Ok, молчу ![]() |
||||
|
|||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
Э нее батенька вы не правы. Пускай пишет. как никак повторение - мать учения. Если человек хочет писать - пускай пишет. Сто пудово кому то поможет. Так что пиши FiMa1 - если будет время - почитаем - все равно порою на работе делать не фиг ![]() |
|||
|
||||
DreLaZ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 26.9.2007 Репутация: 1 Всего: 1 |
Я пользуюсь Borland C++ 4.5 (1991-1994)
в коде программы надо писать <iostream.h> и std при написании проги не надо. В книге написано что это старинный компилятор, но где достать новый компиллятор и есть ли большое отличие? |
|||
|
||||
FiMa1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 23.9.2006 Репутация: 5 Всего: 6 |
DreLaZ, молодец! Твой вопрос действительно оригинален и не поднимался... по крайней мере в данном треде он уже не поднимался целых 17 постов... Компиляторы и IDE для C++ ЗЫЖ: для кого пишем ![]() |
|||
|
||||
Dronchik |
|
|||
![]() Звукач ёмаё ![]() ![]() Профиль Группа: Участник Сообщений: 451 Регистрация: 1.5.2007 Репутация: 0 Всего: 37 |
http://www.microsoft.com/downloads/details...;displaylang=en
Добавлено через 1 минуту и 27 секунд Visual C++ 9 -------------------- Вместо слов делай дело, от которого ты фанатеешь. (с) |
|||
|
||||
DreLaZ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 26.9.2007 Репутация: 1 Всего: 1 |
Компиляторы и IDE для C++
Эту тему я уже читал. Все подряд качать не в сосотоянии. Каким компиллятором посоветуете мне пользоваться (чтоб было без .h)? Это сообщение отредактировал(а) DreLaZ - 12.10.2007, 14:55 |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
||||
|
||||
FiMa1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 23.9.2006 Репутация: 5 Всего: 6 |
Да, вот еще что, не удержался что бы не добавить, дорогие новички, пожалуйста не начинайте учиться программировать с VCL приложений в Borland C++ Builder, т.е. приложений, использующих визуальные компоненты. Начинайте учиться программировать с консольных приложений.
Для BCB 6.0: File->New->Other, выбираем Console Wizard, жмем Ok, в следующем окне выбираем язык исходного кода создаваемой программы (С/С++) и снова Ok. |
|||
|
||||
DreLaZ |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 26.9.2007 Репутация: 1 Всего: 1 |
Кстати, он у меня был. Он также не хочет компилить
выдает ошибку
|
||||||
|
|||||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Ну это уже что-то из разряда фантастики ![]() Есть два варианта: 1. Ты ни разу не написал этот код руками(или написал, но после постояно копипастишь его), а в нём, к примеру, может буква "е" к примеру русским написана - попробуй ручками написать ![]() 2. У тебя талантище устанавливать компиляторы - толи ты постоянно сам удаляешь этот файл, то ли ещё чего делаешь ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
DreLaZ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 26.9.2007 Репутация: 1 Всего: 1 |
Кстати, все и всегда пишу своими руками. Проблема решена: на компе стоял MVS 1.52 и MSV 2005.
Пытался компилить в MVS 1.52 ![]() |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 0 Всего: 52 |
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
DreLaZ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 26.9.2007 Репутация: 1 Всего: 1 |
Установил Microsoft Visual Studio 2005 Express Edition (2,7Gb-наверное нормальной конфигурации).
При запуске проги поставил стандартные настройки с++. Но не могу разобраться в проге. Что выбрать в New (глаза разбегаются при выборе), чтобы написать код программы? |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Что-то вроде new project->c++->win32->win32 console
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
DreLaZ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 26.9.2007 Репутация: 1 Всего: 1 |
Я так понял, что Microsoft Visual Studio 2005 Express Edition усовершенствованный С++?
И там "другая номенкулатура". Я новичек в с++ и прогал тока на borland c++ 4.5 |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Скажем так: любой компилятор вводит свои расширения(ибо стандарт некоторые вещи вообще не оговаривает, к примеру, как создать динамическую библиотеку аля dll/so). Что ты под номенклатурой понимаешь? -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
DreLaZ |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 26.9.2007 Репутация: 1 Всего: 1 |
Ну к примеру написать программу на паскале, чтоб она выводила "Hello" и аналогичную на с++. Один и тот же результат, но разный код. Так и между borland с++ 4,5 и MVS 2005 Express Edition. То чему я научился в с++ я не могу использовать в MVS S 2005 Express Edition. Хотя почитав немного лит-ры по нему можно переучиться. Но стоит ли? зы может, что я что-то делаю в MVS 2005 Express Edition неправильно. Ведь там много настроек при выборе нового файла. ![]() Это сообщение отредактировал(а) DreLaZ - 12.10.2007, 18:00 |
||||
|
|||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
DreLaZ, есть куча отличий в языке, в связи с тем, что VS-8 соответствует стандарту, скажем, на 85%, а BC-4.5, скажем, на 7%(цифры с потолка - это чтобы ты контраст почуствовал).
Ты покажи что у тебя не получается, мы тебе скажем что не так. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
DreLaZ |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 26.9.2007 Репутация: 1 Всего: 1 |
Начну с простого. Книга меня учила (занимаюсь самообучением), для того чтобы вывести на экран надпись: надо подключить библиотекy iostream описать функцию main и тд.............
т.е. имеем прогу
прога компилится без проблем в borland c++ 4.5, а также в visual studio 1.52. А прога представленная ниже, которую представляет книга не компилится в этих 2-ух компилляторах.
В этой же теме мне посоветовали использовать MVS 2005 Express Edition. Но я не могу разобраться в ней и так понял, что к простому с++ она не имеет отношения(код по другому пишется, хотя некоторые моменты похожы). Также как билдер к с++ зы помогите определиться с компиллятором |
||||
|
|||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Это что? Плохая книга, раз не сказали, что нужно подключать ещё и ostream, а то что писать return 0 в main нафик не нужно ![]() File->New->Project...->Visual C++->Win32->Win32 Console Application В поле Name пишешь имя проекта(test, к примеру). В появившемся wizard'е жмёшь Next, потом ставишь галочку empty project, потом Finish. Потом Project->Add New Item...->Visual C++->Code->C++ File(.cpp) В поле Name пишешь имя файла(main, к примеру). Открывается редактор. Там пишешь
Build->Build Solution. Debug->Start without debugging. Видишь чёрный экран и надпись Hello World. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Dronchik |
|
|||
![]() Звукач ёмаё ![]() ![]() Профиль Группа: Участник Сообщений: 451 Регистрация: 1.5.2007 Репутация: 0 Всего: 37 |
А на Visual C++ 6 всё это пишется так
-------------------- Вместо слов делай дело, от которого ты фанатеешь. (с) |
|||
|
||||
DreLaZ |
|
||||||||
![]() Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 26.9.2007 Репутация: 1 Всего: 1 |
Большое спасибо!!! Всё получилось.
вообще-то microsoft visual c++ 1.52 (cкачал с инета)
Книга "с++ за 21 день" (для новичка думаю как раз, потом можно посмотреть что-то другое). Зачем подключать ostream? Согласен, что и return там не нужен. зы что еще изменилось из стандартов не считая .h и std? Добавлено через 1 минуту и 10 секунд
Оно и на Borland c++ 4.5 также пишется. |
||||||||
|
|||||||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Покажи скриншот, а? А лучше ещё и ссылку дай на это чудо ![]() Да я шутю ![]() ![]() Ну фишка в том, что, когда ты пишешь std::cout << blablabla; ты по сути вызываешь std::cout::operator<<(blablabla); или std::operator<<(std::cout, blablabla); (в зависимости от типа blablabla... кстати могут быть и ещё более извращённые случаи). Так вот, Стандарт оговаривает то, что iostream содержит объявления объекта cout, но не гарантирует того, что этот заголовочный содержит определение класса basic_ostream(экземпляром которого cout и является). Т.о. может сработать ADL и вызваться не тот оператор или вообще может не скомпилировать. Под "может" я подразумеваю имеет право по Стандарту - в реальности всё конечно работает и без ostream. А откуда такая согласность ![]() Ф-ция, возвращающая не void(в данном случае int) должна что-нибудь возвращать, разве нет? ![]() Просто Стандарт явно оговаривает, что, если main ничего не возвращает явно, то компилятор должен неявно вставить туда return 0; ![]() Ну, учитывая то, что на момент появления BC-4.5 Стандарта не было вообще, то очень много ![]() Из очень заметного - default int и templates. А так, скорее всего ещё *_cast, mutable, и много чего другого. Очень многие изменения в тонкостях, которые так просто не заметишь... -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
DreLaZ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 26.9.2007 Репутация: 1 Всего: 1 |
||||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Да уж... Раритет
![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 0 Всего: 52 |
archimed7592
Насколько мне известно из книги "С++: стандартная библиотека" от Николая Джосьютиса: по стандарту принято, чтобы main Описывался след. образом:
При успешном завершении - 0. -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
tdebugger |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 20.1.2007 Репутация: нет Всего: 4 |
Хочу предупредить о такой специфической ошибке - если в среде VS создаете визардом консольный проект, то #include <iostrem> надо прописывать в файле stdafx.h, а не там, где main...
--------------------
ТЕХНОЛОГИЯ "JAVA" НЕ ПРЕДНАЗНАЧЕНА ДЛЯ УПРАВЛЕНИЯ ЯДЕРНЫМИ УСТАНОВКАМИWindows98 License.txt |
|||
|
||||
archimed7592 |
|
||||||||||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
tdebugger, не стоит предупреждать о том, чего толком не понимаешь
![]() Если отключены precompiled headers(потом я и показывал на примере empty project), то stdafx.* можно вообще удалить. Если включены, то единственное условие, которое накладывается на модули трансляции - это, чтобы первым include'ом был stdafx.h - в остальном модули ничем не отличаются. Rickert, эхх... Если бы ещё все книги правильно писали...
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
||||||||||
|
|||||||||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 0 Всего: 52 |
Ну и где правда?
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
iura |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 13.10.2007 Репутация: нет Всего: нет |
как получу доступ к IDE
|
|||
|
||||
tdebugger |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 20.1.2007 Репутация: нет Всего: 4 |
Согласен.
Да, но это здесь причем. Не говоря уж о том, что с инклудными файлами работает препроцессор...
Ты знаешь - молодец, а некоторые досадные ошибки делают... --------------------
ТЕХНОЛОГИЯ "JAVA" НЕ ПРЕДНАЗНАЧЕНА ДЛЯ УПРАВЛЕНИЯ ЯДЕРНЫМИ УСТАНОВКАМИWindows98 License.txt |
||||||
|
|||||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
С трёх раз угадаешь? Ну ладно, приведу аналогию: Есть УК-РФ в котором сказано за убийство человека светит X лет. Есть недописатель недолитературы, который утверждает что за убийство человека в Росии сажают на Y лет. Кто прав? Скорее всего, как всегда выдрано из контекста и неправильно понято тобой и писатель тут не при чём(Джосатиса не читал, но слышал только хорошие отзывы). ![]() Ребят, особенно новички: Стандарт ISO/IEC 14882:2003 - это закон. Любой компилятор("IDE") - это всего лишь реализация, которая не всегда соответствует Стандарту и не всегда результат его работы обязан работать "правильно"(j = (i++) + (i++); яркий тому пример).
Угу, но по стандарту компиляция модуля трансляции - это монолитный процесс, а то что конкретные реализации разбивают его на этапы(препроцессинг, компиляция, сборка) - это, опять же, их интимное дело. Я имел ввиду то, что делать iostream(и всё стандартную библиотеку) абстракцией - это дороже, чем просто реализовать её "с нуля"(как будто в компиляторе её нет) в неабстрактных файлах, которые "СУЩЕСТВУЮТ", тем более, что Стандарт предоставляет для этого все возможности. Я тебе о том, что совет твой не правильный. Общий совет выглядит так: любой модуль трансляции должен начинаться с #include "stdafx.h", а то что лично ты предпочитаешь запихивать все заголовочные файлы в stdafx(и не писать их в самих модулях) - это плохо, ибо stdafx нужен для precompiled headers, а никак не для всеобщего сборища зависимостей. Не надо учить новичков плохому стилю ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 0 Всего: 52 |
archimed7592, сам суди:
![]() -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Rickert, ну и сравни теперь это с тем что ты сказал
Я ничего общего не вижу ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
MAKCim |
|
||||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
если бы стандартизовать порядок вычисления (например слева направо) то никакой неоднозначности бы не было 1) temp1 = i 2) i = i + 1 3) temp1 = temp1 + i 4) i = i + 1 5) j = temp1 таким образом однозначно раскручивается любой сложности выражение
разворачиваем в
1) temp1 = i 2) i = i + 1 3) temp1 = temp1 + i 4) temp1 = temp1 - i 5) i = i - 1 6) temp1 = temp1 + i 7) i = i + 1 8) i = temp1
разворачивается в i = i * ((i - (-i + ++i - --i) * i) / ++i) 1) temp1 = i 2) temp2 = i 3) temp3 = -i 4) i = i + 1 5) temp3 = temp3 + i 6) i = i - 1 7) temp3 = temp3 - i 8) temp3 = temp3 * i 9) temp2 = temp2 - temp3 10) i = i + 1 11) temp2 = temp2 / i 12) temp1 = temp1 * temp2 13) i = temp1 Это сообщение отредактировал(а) MAKCim - 14.10.2007, 10:06 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||||
|
|||||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
MAKCim, как только договорюсь с ГОСТ'ом о том, чтобы принимать участие в работе WG21, так сразу займусь этим вопросом
![]() Нет, на самом деле, мы же не стандартизируем ничего - есть Стандарт, мы и компилятор ему пытаемся следовать(для того он и нужен - чтобы все были максимально довольны). И напоследок: ты не задумывался, почему этот порядок не стандартизирован ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
просвети ![]() на самом деле не задумывался Добавлено через 2 минуты и 2 секунды
я не понимаю, почему стандарт не может обязать производить вычисления в определенном порядке ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Ты вот так любишь асм, а за что? За скорость ![]() Вот и здесь тоже: оптимизатору даётся свобода действий. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
аргумент тут и не поспоришь ![]() хотя тут можно включить следующую логику в действия оптимизатора: 1) если какая либо переменная изменяется в правой части выражения 2 и более раз => использовать стандартизованный порядок вычисления для нее, иначе - порядок определяется реализацией 2) переменная изменяется в правой части выражения <=> к ней применяются следующие операторы а) префиксные и постфиксные ++, -- б) +=, -=, *=, /=, >>=, <<=, %=, &=, |=, ^= Это сообщение отредактировал(а) MAKCim - 14.10.2007, 11:02 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Макс, жжошь
![]()
И какой же порядок использовать? Или может быть Стандарту запретить раздельную компиляцию ;)? Или может обязать компоновщик отслеживать такие связи? Добавлено через 1 минуту и 54 секунды Кстати, понятий оптимизатора и его логики в Стандарте нет как таковых ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
archimed7592,
усилим алгоритм для ссылок и указателей применяем стандартизованный порядок
мы говорим о порядке вычисления выражения компилятор должен руководствоваться этим порядком в том числе и для оптимизации тем самым нам и не надо вводить понятие оптимизатора и его логику в стандарт в стандарте - порядок вычисления, и все -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 0 Всего: 52 |
archimed7592, там указано два варианта.
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Я когда-нибудь утверждал что вариант только один? Скорее ты говорил про один вариант, а я лишь толковал о том, что конкретно в main return не обязателен ![]() MAKCim, это был всего-лишь один маленький пример сразу промелькнувший в голове, а если подумать, думаю таких косяков можно много нарыть ![]() В конце концов: j = ++i + i; - здесь переменная меняется только один раз, но, тем не менее, результат не определён ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Sketch |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 15.10.2007 Репутация: нет Всего: нет |
Совсем уж к чайниким по Си себя не отношу ,не подобная задача завела меня в тупик, надеюсь, кто-нибудь растолкует что к чему
![]() Существует ли функция( или алгоритм), в Си( Си++), позволяющая воспринимать строку, введимую с клавиатуры как часть кода программы. Например, ввод двух любых (по желанию пользователя) математических функций, по которым в дальнейшем ведётся рассчет. |
|||
|
||||
DjoNIK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 28.9.2006 Где: Питер/Георгиевск Репутация: 4 Всего: 5 |
по идее - нет! Ведь данные и код - две вещи, которые разделены в памяти. -------------------- - Плесни-ка мне холодного кипятку. - Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды? - Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку. (разговор петербуржца и москвича) |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Sketch, нет, не существует. Только если извращаться и компилировать её на лету.
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
||||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Только если Boost.Python ![]()
AFAICS, имея компилятор нет ничего сложного делать dll'ки на лету. IIRC, у нас один проект именно так и "подгружал" пользовательские ф-ции ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
tdebugger |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 20.1.2007 Репутация: нет Всего: 4 |
//Здравствуйте, господа.
//Очередной глупый вопрос от новичка: //фрагмент кода на С, какие в нем присутствуют ошибки? int d; int d; struct A { int a; } f(c,b) char b; { struct A a; a.a=10; c=a.a; return a; } --------------------
ТЕХНОЛОГИЯ "JAVA" НЕ ПРЕДНАЗНАЧЕНА ДЛЯ УПРАВЛЕНИЯ ЯДЕРНЫМИ УСТАНОВКАМИWindows98 License.txt |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Ну, хоть и gcc не воспринимает это как ошибку(не знаю должен ли), но это немного странно - делать две переменные с одним именем. Синтаксических - никаких. Но ф-ция делает какие-то странные действия. зы. Используй тег code, пожалуйста. Это сообщение отредактировал(а) archimed7592 - 6.11.2007, 22:19 -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
tdebugger |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 20.1.2007 Репутация: нет Всего: 4 |
Пожалуйста
--------------------
ТЕХНОЛОГИЯ "JAVA" НЕ ПРЕДНАЗНАЧЕНА ДЛЯ УПРАВЛЕНИЯ ЯДЕРНЫМИ УСТАНОВКАМИWindows98 License.txt |
|||
|
||||
tdebugger |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 20.1.2007 Репутация: нет Всего: 4 |
Возможно, хотя микроскоповский© компилятор без нее ругается... Не суть важно. Синтаксических ошибок здесь действительно нет(за исключением однострочных комментариев, они, вроде как, в С++ появились), я хотел обратить внимание на определение функции, а конкретнее - на тип возвращаемого значения... Меня давно занимал вопрос: почему в С++ после описания типа нужно ставить точку с запятой, хотя в других языках как то и без нее обходятся. И вот неожиданная разгадка - в старом добром С(без плюсов) разрешалось описывать тип там, где указывается тип возвращаемого значения функции(простите за то, что не хватает умных слов для грамотного выражения мыслей), впоследствии от такой возможности в С++ отказались, потому как гибкости не прибавляет, а ошибок - сколько угодно. Вот и пришлось добавить точку с запятой, чтобы избежать двусмысленности. ...а может я не прав? --------------------
ТЕХНОЛОГИЯ "JAVA" НЕ ПРЕДНАЗНАЧЕНА ДЛЯ УПРАВЛЕНИЯ ЯДЕРНЫМИ УСТАНОВКАМИWindows98 License.txt |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
С этого нужно было начинать ![]() Прав - это одно из отличий С++ от С. Об этом, IIRC, даже сказано в D&E(и, соответственно, объяснено почему это было убрано из языка). Я сначала уже начал было тебе писать про точку с запятой после определения структуры, как вдруг заметил c-style определение ф-ции. Отсюда и вывалилось незавершённое предложение про точку с запятой, которое я забыл удалить перед постингом ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
sharp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 20.10.2007 Репутация: нет Всего: нет |
Здравствуйте. Как можно преобразовать тип double в тип char или string?
|
|||
|
||||
zkv |
|
||||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
1. потери весьма вероятны:
может имел ввиду char * ? 2.
Это сообщение отредактировал(а) zkv - 7.11.2007, 10:46 |
||||
|
|||||
sharp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 20.10.2007 Репутация: нет Всего: нет |
Мне нужно именно в массив char-ов перевести. А не в char*
Это сообщение отредактировал(а) sharp - 7.11.2007, 12:39 |
|||
|
||||
sharp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 20.10.2007 Репутация: нет Всего: нет |
Мне нужно перевести в такую единицу измерения, которую сможет вывести в TextBox функция SetDlgItemText.
А с твоим примером zkv, компилятор ругаеться. Говорит что не может перевести из const char* в char. |
|||
|
||||
sharp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 20.10.2007 Репутация: нет Всего: нет |
Я например должен сложить числа с дробями записанными пользвателем в текстбокс1 и текстбокс2 и записать сумму в текстбокс3. Я делаю по такому алгоритму: функцией GetDlgItemText присваиваю текстовые значения перемынным. Функцией atof перевожу из char в double. Выполняю необходимые действия. Перевожу обратно в char результат(вот это и не получаеться). Записываю в textbox3 его функцией SetDlgItemText.
|
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
||||
|
||||
kurtis |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 10.8.2007 Репутация: нет Всего: нет |
помогите что вклиниваюсь, но что-то я сильно торможу...
почему в структуре нельзя инициализировать массив???(интересует именно C89 либо C99) Это сообщение отредактировал(а) kurtis - 8.11.2007, 16:57 |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Ну, примерно потому же, почему нельзя инизиализировать int в typedef'е:
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
sharp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 20.10.2007 Репутация: нет Всего: нет |
||||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Приведи полностью код и укажи на какую конкретно строку он ругается. Ещё компилятор озвучить неплохо было бы... -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
NiCketT |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 10.9.2007 Репутация: нет Всего: нет |
Почему не работает такой кусок кода?
Работал (вводил с клавы число, втыкал ее в функцию SS и выводил результат) а тепеь не работает. Пробовал под Борландом, ВижулСтудио и gcc - везде виснит! ![]() |
|||
|
||||
sharp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 20.10.2007 Репутация: нет Всего: нет |
Компилятор Visual C++ 6 Это сообщение отредактировал(а) sharp - 9.11.2007, 19:37 |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Насколько я понимаю, в эту ф-цию нужно передавать c-строку, а ты пытаешься передать символ. Как это относится к примеру zkv я не догоняю ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
NiCketT |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 10.9.2007 Репутация: нет Всего: нет |
уже разобрался - ошибка была гдето в форе
|
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
sharp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 20.10.2007 Репутация: нет Всего: нет |
archimed7592, charValue у меня объявленна как charValue[10];
Попробывал преобразовать в string, выдаёт такие ошибки
Это сообщение отредактировал(а) sharp - 10.11.2007, 13:38 |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
#include <string> #include <ostream> #include <sstream> -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
magadan87 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 2.11.2007 Где: Томск Репутация: 0 Всего: 1 |
такой вот вопрос
получаем ошибку "ошибка: expected expression before '=' token" |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
||||
|
||||
magadan87 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 2.11.2007 Где: Томск Репутация: 0 Всего: 1 |
||||
|
||||
sharp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 20.10.2007 Репутация: нет Всего: нет |
archimed7592,
1 ошибка не хочет исправляться |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Господа новички, телепатов здесь нет! 1. Показывайте свой код. 2. Указывайте номер строки на которую ругается компилятор. 3. Указывайте ошибку полностью(дословно). Добавлено через 1 минуту и 49 секунд sharp, тебе нужно написать ".c_str()", а вот где - сиди, думай, гадай. Если бы нормально задавал вопросы(показывал бы код и т.д.), то сидеть, думать и гадать не пришлось бы. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Dronchik |
|
|||
![]() Звукач ёмаё ![]() ![]() Профиль Группа: Участник Сообщений: 451 Регистрация: 1.5.2007 Репутация: 0 Всего: 37 |
извините. не туда запостил. удалите пожалуйста.
Это сообщение отредактировал(а) Dronchik - 11.11.2007, 08:29 -------------------- Вместо слов делай дело, от которого ты фанатеешь. (с) |
|||
|
||||
sharp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 20.10.2007 Репутация: нет Всего: нет |
archimed7592, извини за мою тупость. Ошибка указывала на 3 строку приведённую мной ранее. Я к stringValue добавил .c_str() и всё заработало. Спасибо.
|
|||
|
||||
archimed7592 |
|
||||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
В коде, который ты приводил ранее c_str вставить вообще некуда, ибо там string не используется. Интересно, если увеличить шрифт ещё пунктов на 10, до новичков дойдёт, что телепатия - явление редкое?
Dronchik, я чё-то недопонял... У тебя 2 профиля? -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
||||
|
|||||
Dronchik |
|
|||
![]() Звукач ёмаё ![]() ![]() Профиль Группа: Участник Сообщений: 451 Регистрация: 1.5.2007 Репутация: 0 Всего: 37 |
нет вроде
-------------------- Вместо слов делай дело, от которого ты фанатеешь. (с) |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
А почему тогда от твоего имени был написан пост слово в слово повторяющий тот, который чуть позже написал sharp?
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Dronchik |
|
|||
![]() Звукач ёмаё ![]() ![]() Профиль Группа: Участник Сообщений: 451 Регистрация: 1.5.2007 Репутация: 0 Всего: 37 |
archimed7592, низнаю. ПМ тебе отправил чтобы не оффтопить
-------------------- Вместо слов делай дело, от которого ты фанатеешь. (с) |
|||
|
||||
kurtis |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 10.8.2007 Репутация: нет Всего: нет |
как в функции r_memcpy() определить размер массива lamps, который находится в структуре data_from???
|
|||
|
||||
DjoNIK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 28.9.2006 Где: Питер/Георгиевск Репутация: 4 Всего: 5 |
В size ты записал не размер массива, а размер указателя на первый элемент массива. Если не ошибаюсь, то размер массива, в общем случае, невозможно определить. Поэтому в функцию всегда передается помимо указателя на сам массив еще и его размер. PS: Извиняюсь за частое употребление слова массив. Добавлено через 4 минуты и 46 секунд Что-то я задумался... Тебе нужно узнать размерность (сколько элементов) массива или, все же, размер каждого элемента? Если последнее, то
-------------------- - Плесни-ка мне холодного кипятку. - Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды? - Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку. (разговор петербуржца и москвича) |
|||
|
||||
kurtis |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 10.8.2007 Репутация: нет Всего: нет |
мне нужно узнать количество элементов!!!
может я решаю задачу через одно место, но мне нужно все переменные в массиве lamps обработать определенным образом, а другие не трогать!!!т.е. мне нужно как-то обратится к этому массиву в структуре....как это сделать лучшим образом я незнаю.... |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
||||
|
||||
kurtis |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 10.8.2007 Репутация: нет Всего: нет |
Спасибо за интересную идею....
нужно все это оформить на жестком СИ (НЕ СИ++), а то, под что я это пишу, с Си++ не дружит(компилятора нету)!!!!=)))))) Это сообщение отредактировал(а) kurtis - 12.11.2007, 17:49 |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Почему не static_cast? -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
||||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
STRUCT_FROM *pdst = reinteret_cast<STRUCT_FROM *>(dst); замени на STRUCT_FROM *pdst = (STRUCT_FROM *)dst; |
|||
|
||||
Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 1 Всего: 11 |
А что такое эти "паттерны" и как ими пользоваться?
|
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Фраза откуда выдрана вообще? Тебя в гугле забанили? |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
а что такое эти "словари" всякие да "энциклопедии" и как ими пользваться? http://ru.wikipedia.org/wiki/Паттерн |
|||
|
||||
Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 1 Всего: 11 |
![]() Ну я, наверное, понимаю в принципе, что это такое. Но никогда не пользовался и не пойму, как практически этим пользоваться. Вроде бы это не библиотеки, а какой-то набор "решений" с классами. Какое преимущество они дают? Разве не проще самому придумать класс? И наоборот, разве паттерн потом не придётся всё равно переиначивать под конкретный случай? Не получится ли так, что зазубривание паттернов и раздумья, какой же из них подойдёт для твоего случая, займёт больше времени, чем просто придумать себе класс? Выглядит, как систематизация изобретений. Но, как я понимаю, этим пользуются. Значит, наверное, я ошибаюсь. И паттерны это не совсем то, что я думаю и в них есть какая-то польза. Вот меня недавно спросили "какими паттернами ты пользуешься в работе". А я и не знаю, что ответить. Действительно ли эти паттерны помогают? |
|||
|
||||
DjoNIK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 28.9.2006 Где: Питер/Георгиевск Репутация: 4 Всего: 5 |
Если у тебя будет опыть (хотя бы небольшой), то однозначно НЕТ! -------------------- - Плесни-ка мне холодного кипятку. - Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды? - Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку. (разговор петербуржца и москвича) |
|||
|
||||
archimed7592 |
|
||||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
При разумном применении, получаемые преимущества - это, как минимум: гибкость, расширяемость, простота применения. Смотря что понимать под словами "проще". Бывает, что "проще"(меньше напрягая мозг) писать логику прямо в обработчиках событий, но реальная выгода от такой "простоты" весьма сомнительна.
Цель паттернов - не предоставить универсальную библиотеку, а обобщить основные, часто применяемые проектные решения.
"Зазубривание" вообще, как правило, никогда не оправдывает потраченного времени и редко приносит реальную выгоду. Да, если они "стекают с кончиков пальцев" ©. В противном случае, появляется вот такое как у тебя недопонимание "а зачем это вообще нужно?", но, со временем и опытом приходит всё. Это сообщение отредактировал(а) archimed7592 - 14.11.2007, 00:01 -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
||||
|
|||||
Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 1 Всего: 11 |
Ну вот, допустим, я хочу приобрести опыт общения с паттернами. Что мне нужно делать? Справочник паттернов какой-то нарыть? И потом, решая практические задачи, пытаться выискивать в этом справочнике нужный паттерн?
|
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Для начала попытаться понять зачем нужен каждый паттерн. Посидеть, повспоминать то что ты уже делал и подумать, где бы ты какой паттерн мог бы применить. Потом просто продолжать работать, как работал - у тебя само собой будет появляется желание сделать неуклюжую попытку применить тот или иной паттерн. Потом эти попытки станут более "уклюжими" ![]() Сама книга, неустаревающая классика жанра - GoF. Могу только пожелать удачи в хорошем(я бы сказал очень правильном) начинании ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
VladimirC |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 12.11.2007 Репутация: нет Всего: нет |
А не моглибы вы подсказать,новичку, как сделать так чтобы определенная команда,строка выполнялась только по прошествии определенного промежутка времени?
|
|||
|
||||
DjoNIK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 28.9.2006 Где: Питер/Георгиевск Репутация: 4 Всего: 5 |
Если ты хочешь, что бы "промежуток времени" был аппаратно независим, то, если я не ошибаюсь, тебе нужно создавать отдельный поток. Но так как ты новичок, то, возможно, цикл по сетчику тебе поможет. -------------------- - Плесни-ка мне холодного кипятку. - Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды? - Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку. (разговор петербуржца и москвича) |
|||
|
||||
VladimirC |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 12.11.2007 Репутация: нет Всего: нет |
а можно немножко поподробнее, как я понял просто сделать одну постоянно повторяющуюся, Х раз, команду? так? а если не сложно можно примерчик?
![]() ![]() |
|||
|
||||
Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 1 Всего: 11 |
Ну ты циклы умеешь делать? Операторы for, while, do?
|
|||
|
||||
VladimirC |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 12.11.2007 Репутация: нет Всего: нет |
конечно ,толко что надо вписать в этот цикл? какая команда отвечает за этот счетчик?
|
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
десять раз вызвать X();
|
|||
|
||||
AndrRus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 14.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
VladimirC, если я правильно понял, то ты хочешь просто оттянуть время в программе? Если да, то самым глупым способом - это можно сделать следующим образом: складывать бесконечно малую величину каким-либо из предложенных тебе циклов, пока она не станет значимой.
|
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Паузу можно задать определенными командами. Например sleep(unsigned sec) - пауза на sec секунд. Можно и другими, более точными, но для этого ты должен сказать, что у тебя за ОС и какой компилятор. |
|||
|
||||
VladimirC |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 12.11.2007 Репутация: нет Всего: нет |
bsa спасибо этого ответа я и ждал) попробую)
|
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Прочти мою подпись и запомни. ![]() |
|||
|
||||
kurtis |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 10.8.2007 Репутация: нет Всего: нет |
скорее всего это уже где-то было, но все-таки...
В чем смысл объявления функции как static???
В чем смысл такой вот штуки и что она вообще значит???конктретно смущает слово struct перед функцией!!!
заранее спасибо!!!=) |
||||
|
|||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
это тип возвращаемого значения функции. область видимости функции ограничивается одним модулем. |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
kurtis, оба вопроса - пережиток языка Си.
В С++ вместо static используюется namespace {}(анонимное пространство имён), а struct перед именем типа структуры писать не нужно. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
kurtis |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 10.8.2007 Репутация: нет Всего: нет |
спасибо, помогло!!!=))
|
|||
|
||||
Hehe |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 18.3.2008 Репутация: нет Всего: нет |
Проблема:
Это сообщение отредактировал(а) Hehe - 18.3.2008, 00:56 |
|||
|
||||
korian |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 8.3.2008 Где: Украина, Харьков Репутация: 3 Всего: 17 |
generic<class T>
where T : MyInterface<T> это что за конструкция? С++? я так понимаю надо в объявление функции добавить MyClass<T> Это сообщение отредактировал(а) korian - 18.3.2008, 04:08 |
|||
|
||||
Hehe |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 18.3.2008 Репутация: нет Всего: нет |
Да, это конструкция Managed C++. Говорит, что тип T унаследован от MyInterface. А вот этот момент попросил бы пояснее. Надо было, наверно, раньше написать - если использовать вместо operator *, например, operator +, то все будет замечательно. Это сообщение отредактировал(а) Hehe - 18.3.2008, 04:40 |
|||
|
||||
Hehe |
|
||||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 18.3.2008 Репутация: нет Всего: нет |
Ура. Проблема решена.
вместо вызова
|
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |