Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопросник новичка 
:(
    Опции темы
Rickert
Дата 11.10.2007, 05:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 0
Всего: 52



Я предлогаю закрепить эту тему где-нибудь на видно месте и чтобы люди, которые только начали изучать язык и не могут пока осилить "hello world" или не понимают почему теперь iostream.h указывается  без *.h - отписывали свои вопросы тут. Согласитесь - большая часть таких людей не пользуется поиском, и создаёт темы с элементарными вопросами и начинается перепалка с модераторами / ругань / баны / обиды / сопли намотанные на кулак и всё такое прочее smile 
А тут без злости так сказать будем отвечать на их вопросы smile 


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
tdebugger
Дата 11.10.2007, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 20.1.2007

Репутация: нет
Всего: 4



У меня такой вопрос - почему теперь iostream.h указывается  без *.h, я серьезно, раньше я как-то не обращал на это внимания, а раз тут такое дело, не грех и спросить.... 
--------------------
ТЕХНОЛОГИЯ "JAVA"  НЕ ПРЕДНАЗНАЧЕНА ДЛЯ УПРАВЛЕНИЯ ЯДЕРНЫМИ УСТАНОВКАМИWindows98 License.txt
PM MAIL MSN   Вверх
DjoNIK
Дата 11.10.2007, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 28.9.2006
Где: Питер/Георгиевск

Репутация: 4
Всего: 5



По стандарту *.h - Си-шный стиль, в то время как в С++ - либо *.hpp, либо вообще без расширения.



--------------------
- Плесни-ка мне холодного кипятку.
- Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды?
- Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку.
(разговор петербуржца и москвича)
PM MAIL ICQ   Вверх
MAKCim
Дата 11.10.2007, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



DjoNIK
а разве стандартом оговорены расширения файлов?  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
DjoNIK
Дата 11.10.2007, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 28.9.2006
Где: Питер/Георгиевск

Репутация: 4
Всего: 5



MAKCim, не по стандарту компилятора, конечно, это в принципе невозможно smile
По одному из принятых стандартов (по-крайней мере я так читал у авторитетного источника)


--------------------
- Плесни-ка мне холодного кипятку.
- Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды?
- Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку.
(разговор петербуржца и москвича)
PM MAIL ICQ   Вверх
Rickert
Дата 11.10.2007, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 0
Всего: 52



Вроде по последнему стандарту принято, что заголовочные файлы не должны иметь расширения.
Правда чем это обусловлено - не ясно.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
FiMa1
Дата 11.10.2007, 09:25 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: 5
Всего: 6



Copy/Paste (Шилдт Г. Самоучитель С++):
Новые заголовки в программах на C++
Как вам должно быть известно из опыта программирования на С, при использовании библиотечной функции в программу необходимо включить заголовочный файл. Это делается с помощью инструкции #include. Например, при написании программ на языке С заголовочным файлом для функций ввода/вывода является файл stdio.h, который включается в программу с помощью следующей инструкции:
Код
# include <stdio.h>

Здесь stdio.h — это имя файла, который используется функциями ввода/вывода, и предыдущая инструкция заставляет компилятор включить указанный файл в вашу программу.
В первые несколько лет после появления C++ в нем использовался тот же стиль оформления заголовков, что и в С. Для совместимости с прежними программами в языке Standard C++ этот стиль по-прежнему поддерживается. Тем не менее при работе с библиотекой Standard C++ в соответствии с новым стилем вместо имен заголовочных файлов указываются стандартные идентификаторы, по которым компилятор находит требуемые файлы. Новые заголовки C++ являются абстракциями, гарантирующими объявление соответствующих прототипов и определений библиотеки языка Standard C++.
Поскольку новые заголовки не являются именами файлов, для них не нужно указывать расширение .h, а только имя заголовка в угловых скобках. Ниже представлены несколько заголовков, поддерживаемых в языке Standard C++:
Код
<iostream>
<fstream>
<vector>
<string>

Такие заголовки по-прежнему включаются в программу с помощью инструкции #include. Единственным отличием является то, что новые заголовки совершенно не обязательно являются именами файлов.
Поскольку С++ содержит всю библиотеку функций С, по-прежнему поддерживается стандартный стиль оформления заголовочных файлов библиотеки С. Таким образом, такие заголовочные файлы, как stdio.h и ctype.h все еще доступны. Однако Standard C++ также определяет заголовки нового стиля, которые можно указывать вместо этих заголовочных файлов. В соответствии с версией C++ к стандартным заголовкам С просто добавляется префикс с и удаляется расширение .h. Например, заголовок math.h заменяется новым заголовком C++ <cmath>, а заголовок string.h — заголовком
<cstring>. Хотя в настоящее время при работе с функциями библиотеки С допускается включать в программы заголовочные файлы в соответствии со стилем С, такой подход не одобряется стандартом языка Standard C++. (То есть, он не рекомендуется.) По этой причине во всех имеющихся в книге инструкциях #include используется новый стиль написания заголовков программ. Если ваш компилятор для функций библиотеки С не поддерживает заголовки нового стиля, просто замените их заголовками в стиле С.
Поскольку заголовки нового стиля появились в C++ совсем недавно, во многих и многих прежних программах вы их не найдете. В этих программах в соответствии со стилем С в заголовках указаны имена файлов. Ниже представлен традиционный способ включения в программу заголовка для функций ввода/вывода:
Код
#include <iostream.h>

Эта инструкция заставляет компилятор включить в программу заголовочный файл iostream.h. Как правило, в заголовках прежнего стиля вместе с расширением .h используется то же имя, что и в соответствующих им новых заголовках.
Как уже отмечалось, все компиляторы C++ поддерживают заголовки старого стиля. Тем не менее такие заголовки объявлены устаревшими и не рекомендуются. Именно поэтому в книге вы их больше не встретите.
! Несмотря на повсеместное распространение в программах заголовков старого стиля, они считаются устаревшими.

Библиотека <iostream.h>не является частью стандарта языка. С другой стороны библиотека <iostream> входит в стандарт. Библиотека <iostream> реализована в виде объектно-ориентированной иерархии классов, поддерживает как основные так и расширенные (unicode) символы. С другой стороны <iostream.h> ограничена исключительно символами char (символы ASCII). Кроме того, целесообразно использовать <iostream>, если, разумеется, ваш компилятор поддерживает это, т.к. все компоненты <iostream> находятся в пространстве имен (namespace) std, в то время, как компоненты <iostream.h> располагаются в глобальном пространстве.
Есть три основных механизма использования библиотеки <iostream>:
  •  Использование подробного описания посредством операция явного задания (scope-resolution operator):
    Код
    std::cout << "Hello World!" << std::endl;
  •  Использование объявления для каждого члена namespace, который вы хотите использовать, к примеру:
    Код
    using std::cout;
    using std::endl;
    cout << "Hello World!" << endl;
  •  Использование директивы, которая предоставляет все пространство имен внутри вашей локальной области видимости (namespace):
    Код
    int main() {
    using namespace std;
    cout << "Hello World!" << endl;
    return EXIT_SUCCESS;
    }
Итак, если вам в программе необходимо использовать какой-то компонент <iostream> только один или два раз, то используйте правило 1, иначе, если ваша программа довольно интенсивно использует возможности <iostream>, то более удобным будет использовать правило 3.

Это сообщение отредактировал(а) FiMa1 - 11.10.2007, 10:48
PM   Вверх
FiMa1
Дата 11.10.2007, 10:23 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: 5
Всего: 6



Какой компилятор выбрать?
Компиляторы и IDE для C++
Какую книгу выбрать?
Литература по C++
Что такое: STL, MFC, ATL, API, WinAPI, .Net, VCL?
Что такое STL...
Что такое MFC...
Что такое ATL...
Что такое API...
Что такое WinAPI...
Что такое .NET...
Что такое VCL...

Итог: да и воздастся ищущему...

ДРУЗЬЯ, ПРЕДЛАГАЮ ИЗБЕГАТЬ ВОСТОРЖЕННЫХ И БЛАГОДАРСТВЕННЫХ РЕПЛИК В ДАННОМ ТРЕДЕ, ДАБЫ НЕ ПЕРЕГРУЖАТЬ ЕГО ЛИШНЕЙ ИНФОРМАЦИЕЙ, ЕСЛИ ТРЕД ДЕЙСТВИТЕЛЬНО РЕШЕНО ЗАКРЕПИТЬ! СПАСИБО И БЕЗ ОБИД smile ! ВМЕСТО ЭТОГО ПРЕДЛАГАЙТЕ ВАРИАНТЫ НАИБОЛЕЕ ЧАСТО ЗАДАВАЕМЫХ ВОПРОСОВ ОТ НОВИЧКОВ.

Это сообщение отредактировал(а) FiMa1 - 11.10.2007, 13:41
PM   Вверх
tdebugger
Дата 11.10.2007, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 20.1.2007

Репутация: нет
Всего: 4



Спасибо за бурную реакцию, однако появились вопросы по некоторым нюансам, как получу доступ к IDE, проверю, уточню и выскажу...  
--------------------
ТЕХНОЛОГИЯ "JAVA"  НЕ ПРЕДНАЗНАЧЕНА ДЛЯ УПРАВЛЕНИЯ ЯДЕРНЫМИ УСТАНОВКАМИWindows98 License.txt
PM MAIL MSN   Вверх
mrbrooks
Дата 11.10.2007, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 2
Всего: 306



to FiMa1 будте справедливы  киньте ссылку еще на VCL!
PM MAIL   Вверх
chelser
Дата 11.10.2007, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 9.10.2007

Репутация: нет
Всего: нет



ценная информация
спасибо
PM MAIL   Вверх
FiMa1
Дата 11.10.2007, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: 5
Всего: 6



В чем отличие ссылки от указателя? Как использовать ссылки?
В C++ есть элемент, родственный указателю — это ссылка (reference). Ссылка является скрытым указателем и во всех случаях, и для любых целей ее можно употреблять просто как еще одно имя переменной.
Ссылку допустимо использовать тремя способами:
  • Ссылку можно передать в функцию. 
  • Ссылку можно возвратить из функции. 
  • Можно создать независимую ссылку.
ПЕРЕДАЧА ПАРАМЕТРОВ В ФУНКЦИИ ПОСРЕДСТВОМ ССЫЛОК
Наиболее распостраненное применение ссылки — передача ее в качестве параметра функции. Что бы понять, что такое параметр-ссылка и как это работает, рассмотрим программу, в которой параметром является указатель, а не ссылка:
Код
#include <iostream>

// использование параметра-указателя
void foo(int *p)
{
    *p = 100; // занесение числа 100 в аргумент,
              // на который указывает указатель p
}

int main()
{
    int i = 0;
    std::cout << "Initial value of i is: " << i << '\n';
    foo(&i); // передать адрес переменной i в функцию foo
    std::cout << "New value of i is: " << i << '\n';
    
    return 0;
}

Здесь функция foo() загружает целое значение 100 по адресу, который обозначен указателем p. В данной программе функция foo() вызывается из функции main() с адресом переменной i, по которому она располагается в памяти. Таким образом, после выполнения функции foo() переменная i будет содержать число 100.
В этой программе показано, как использовать указатель для реализации механизма передачи параметра посредством вызова по ссылке (call by reference). В программах С такой механизм является единственным спосо бом добиться вызова функции по ссылке. 
Запомните в языке Си ссылок нет!
Однако в C++ с помощью параметра-ссылки можно полностью автоматизировать весь процесс. Чтобы узнать, как это сделать, изменим предыдущую программу. В ее новой версии используется параметр-ссылка:
Код
#include <iostream>

// использование параметра-ссылки
void foo(int &r)
{
    r = 100; // теперь знак разыменования '*' для доступа
               // к значению переменной i не требуется!
             // здесь число 100 сразу же заносится в то
             // место в памяти, где хранится значение i
}

int main()
{
    int i = 0;
    std::cout << "Initial value of i is: " << i << '\n';
    foo(i); // передать адрес переменной i в функцию foo
            // заметьте, что оператор взятия адреса '&'
            // теперь не нужен, т.к. параметр функции foo
            // сразу же объявлен как ссылка
    std::cout << "New value of i is: " << i << '\n';
    
    return 0;
}

Проанализируйте эту программу! Во-первых, для объявления параметра-ссылки перед именем переменной ставится знак амперсанда (&). Таким образом, переменная r объявляется параметром функции foo(). Теперь, поскольку переменная r является ссылкой, больше не нужно и даже неверно указывать оператор ‘*’. Вместо него всякий раз, когда переменная п упоминается внутри функции f(), она автоматически трактуется как указатель на аргумент, используемый при вызове функции f(). Это значит, что инструкция
Код
r = 100;

фактически помещает число 100 в переменную, используемую при вызове функции foo(), каковой в данном случае является переменная i. Далее, при вызове функции f() перед аргументом не нужно ставить знак &. Вместо этого, поскольку функция f() объявлена как получающая параметр-ссылку, ей автоматически передается адрес аргумента.
Теперь важно запомнить следующее: значение адреса, на который указывает ссылка, вы изменить не можете (в этом поведение ссылок схоже с поведением константных указателей). Например, если в программе, где используется параметр-ссылка поместить в тело функции foo инструкцию:
Код
r++;

Вместо инкрементирования адреса, как это было бы с использованием указателей эта инструкция инструкция инкрементирует значение переменной (в данном случае это переменная i).
Кроме того, ссылка должна быть инициализирована в месте ее объявления, так если вы напишите где-то в программе, к примеру:
Код
int &r;

то непременно получите ошибку вида “references must be initialized” (в этом можно найти еще одно сходство ссылок с константными указателями).
Параметры-ссылки имеют несколько преимуществ по сравнению с аналогичными (более или менее) альтернативными параметрами-указателями.
Во-первых, с практической точки зрения нет необходимости получать и передавать в функцию адрес аргумента. При использовании параметра ссылки адрес передается автоматически. Во-вторых, по мнению многих программистов, параметры-ссылки предлагают более понятный и элегантный интерфейс, чем механизм указателей. В-третьих, как вы узнаете потом, при передаче объекта функции через ссылку копия объекта не создается. Это уменьшает вероятность ошибок, связанных с построением копии аргумента и вызовом ее деструктора.

ВОЗВРАЩЕНИЕ ПАРАМЕТРОВ ИЗ ФУНКЦИЙ ПОСРЕДСТВОМ ССЫЛОК
Фактически ничего особенного здесь нет, реализуется это также как и в случае с получением параметров посредством ссылок.
Для начала рассмотрим пример с использованием указателей для возврата значений из функций:
Код
#include <iostream>

int *foo() // foo возвращает указатель на целочисленную переменную
{
    static int var = 100;
    return &var; // необходимо использовать оператор
                 // взятия адреса '&' для возврата адреса
}

int main()
{
    int a = *foo() + 1; // необходимо разыменование
                        // посредством '*' для получения
                        // значения var

    return 0;
}

Но функции могут возвращать и ссылки, однако здесь надо быть осторожным! Если возвращение ссылки переменной объявлено в вызываемой функции, переменная должна быть объявлена внутри этой функции как static. В противном случае ссылка адресуется автоматической переменной, которая после завершения функции уничтожается; в таком случае говорят, что переменная «не определена» и поведение программы непредсказуемо.
Так для следующего примера
Код
#include <iostream>

int &foo()
{
    int var = 100;
    return var;
}

int main()
{
    int a = foo() + 1;

    return 0;
}

вы получите следующее предупреждение: “ returning address of local variable or temporary”. Да, результат выполнения такой программы чреват печальными последствиями, если к моменту использования значения переменной var, располагающееся по адресу возвращаемому функцией foo, значение будет перезаписано чем-либо другим.
Таким образом вы должны объявить var так
Код
static int var = 100;

Обратите внимание, что для возврата адреса переменной var из функции также не нужно использовать оператора взятия адреса ‘&’, т.к. функция изначально была объявлена как возвращающая ссылку на переменную целого типа. Соответственно и в main оператора разыменования ‘*’ писать не нужно.

НЕЗАВИСИМЫЕ ССЫЛКИ
Хотя они обычно и не используются, вы можете создавать независимые ссылки (independent reference). Независимая ссылка — это ссылка, которая во всех случаях является просто другим именем переменной. Поскольку ссылкам нельзя присваивать новые значения, независимая ссылка должна быть инициализирована при ее объявлении.
! Большинство программистов чувствует ненужность независимых ссылок, они добавляют неразберихи в программу. Как правило, их следует избегать.
Пример программы с независимой ссылкой:
Код
#include <iostream>
using namespace std;

int main()
{
    int x;
    int &ref = x; // создание независимой ссылки
    x = 10;   // эти две инструкции
    ref = 10; // функционально идентичны
    ref = 100;
    // здесь дважды печатается число 100
    cout << x << ' ' << ref << "\n";
    
    return 0;
}

В этой программе независимая ссылка ref служит другим именем переменной х. С практической точки зрения ref и х идентичны.

В завершении подведем некоторые ограничения, которые распостраняются на ссылки:
  • Нельзя изменить адрес ссылки;
  • Нельзя создавать массивы ссылок;
  • Нельзя ссылаться на битовое поле;
  • Ссылка должна быть инициализирована в момент объявления, до того как она будет использована как член класса, возвращена как значение функции или станет параметром функции.

PM   Вверх
zkv
Дата 11.10.2007, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(Rickert @  11.10.2007,  05:26 Найти цитируемый пост)
Я предлогаю закрепить эту тему где-нибудь на видно месте и чтобы люди, которые только начали изучать язык и не могут пока осилить "hello world" или не понимают почему теперь iostream.h указывается  без *.h - отписывали свои вопросы тут.

таких вопросов ну очень много разных возникнуть может. Толку если все ответы на них в кучу свалить? Если чел поленился книгу почитать, он станет читать километровую тему? Сомневаюсь.
Цитата(Rickert @  11.10.2007,  05:26 Найти цитируемый пост)
Согласитесь - большая часть таких людей не пользуется поиском, и создаёт темы с элементарными вопросами

Для элементарных вопросов есть FAQ. Если чел поленился туда заглянуть, то почему он станет читать эту тему?
Rickert, предложение хорошее, доброе, но только велосипед уже изобретен: FAQстатьиисходники...

PM MAIL   Вверх
FiMa1
Дата 11.10.2007, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: 5
Всего: 6



Цитата(zkv @ 11.10.2007,  15:34)
Если чел поленился книгу почитать, он станет читать километровую тему? Сомневаюсь. Согласитесь - большая часть таких людей не пользуется поиском, и создаёт темы с элементарными вопросами.

Первое что пришло в голову...
Ну и так, если все ж останется:

Чем отличается константный указатель от константного указателя на константу?
Константный указатель- для такого указателя невозможно изменить адрес на который он указывает.
Константный указатель на константу - для такого указателя невозможно изменить ни адрес на который он указывает, ни значение, которое находится по данному адресу в памяти.
Для примера просмотрите приведенный ниже код:
Код
#include <iostream>
using namespace std;

// foo1 принимает константный указатель на целочисленную
// переменную. Не может "перенаправлять" указатель, т.е.
// изменить адрес
void foo1(int *const cnstPnt)
{
    //cnstPnt++; //ERROR: you cannot assign to a variable that is const!
                 // вы не можете получить доступ к переменной, являющейся константой!
    *cnstPnt = *cnstPnt + 1;
    int var = *cnstPnt + 1;
}

// foo1 принимает константный указатель на константу
// целочисленного типа. Не может "перенаправлять" указатель,
// т.е. изменить адрес и не может изменить значение по
// этому адресу
void foo2(int const *const cnstPnt)
{
    //cnstPnt++;     //ERROR: you cannot assign to a variable that is const!
                     // вы не можете получить доступ к переменной, являющейся константой!
    //*cnstPnt += 1; //ERROR: you cannot assign to a variable that is const!
                     // вы не можете получить доступ к переменной, являющейся константой!
    int var = *cnstPnt + 1; // правильно
}

int main()
{
    int var = 10; // обычная переменная
    
    //int *const cnstPnt; //ERROR: const object must be initialized if not extern!
                          // константный объект должен быть инициализирован если
                          // он не внешний!
    int *const cnstPnt = &var; // правильно

    foo1(&var); // не смогут изменить адрес var
    foo2(&var); // не смогут ни адрес var ни его значения

    return 0;
}

PM   Вверх
Rickert
Дата 11.10.2007, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 0
Всего: 52



zkv, понимаешь, не в обиду будет сказано дзайнеру и админам, но раздел FAQ - незаметен.
Если бы ссылка на него висела в разделе "C/C++ общие вопросы" - то народ бы юзал.
имхо.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Fazil6
Дата 11.10.2007, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



FiMa1, ты серьёзно? 
ты написал много, но честно говоря ценность этого весьма сомнительна... 
Тема отличия указателей и ссылок не раскрыта.
Если уж пишешь о передаче ссылок в функции, то где тема о константных ссылках  и вообще зачем использовать передачу по ссылке и константной ссылке, так что опять незачет.
Не раскрыта тема "Зачем возвращать ссылки из функций". После раскрытия ее становится ясно, что это применяется в конкретных случаяхи и в общем случае возвращать ссылки из функций не подходящее решение.
Если уж советовать возвращать ссылку на static переменную, то нужно следом писать статью о том насколько это некрасиво и чем черевато. 
Цитата

Никогда не возвращайте ссылку, когда должны вернуть объект

Не помню кто сказал


PM MAIL   Вверх
archimed7592
Дата 12.10.2007, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Давайте, давайте, скопипастити сюда Страуструпа, Шилдта и прочих писателей для новичков... Желательно в полном объёме smile.
Думаю, 90% всех подобных вопросов освещены в C++ FAQ LITE, правда он на английском, что новичка не всегда устраивает... Да с новичками наверное всегда проблемы будут... Ну не знают они обычаев форума, не обучены нэтикету.


Цитата(DjoNIK @  11.10.2007,  08:46 Найти цитируемый пост)
По одному из принятых стандартов (по-крайней мере я так читал у авторитетного источника)

Твои сновидения - это авторитетный источник smile?

Цитата(Rickert @  11.10.2007,  08:56 Найти цитируемый пост)
Вроде по последнему стандарту принято, что заголовочные файлы не должны иметь расширения.
Правда чем это обусловлено - не ясно. 

По последнему(и предпоследнему smile) стандарту принято, что стандартные заголовочные файлы не должны иметьют расширения.
Обусловлено, думаю, тем же, что и зарезервированные идентификаторы - отсутствием коллизий имён файлов.


--------------------
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
PM Jabber   Вверх
tdebugger
Дата 12.10.2007, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 20.1.2007

Репутация: нет
Всего: 4



Цитата(tdebugger @  11.10.2007,  11:36 Найти цитируемый пост)
однако появились вопросы по некоторым нюансам

так вот
Цитата(FiMa1 @  11.10.2007,  09:25 Найти цитируемый пост)
с новым стилем вместо имен заголовочных файлов указываются стандартные идентификаторы, по которым компилятор находит требуемые файлы. Новые заголовки C++ являются абстракциями

насчет абстракций - файл iostream таковым не является, потому что он СУЩЕСТВУЕТ !
 Короче, мои идеи по этому поводу - "стандартные идентификаторы" будут реализованы в будущем, а сейчас для совместимости используются имена реальных файлов...


--------------------
ТЕХНОЛОГИЯ "JAVA"  НЕ ПРЕДНАЗНАЧЕНА ДЛЯ УПРАВЛЕНИЯ ЯДЕРНЫМИ УСТАНОВКАМИWindows98 License.txt
PM MAIL MSN   Вверх
archimed7592
Дата 12.10.2007, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(tdebugger @  12.10.2007,  08:44 Найти цитируемый пост)
насчет абстракций - файл iostream таковым не является, потому что он СУЩЕСТВУЕТ !

Имеет право не существовать. Это интимное дело конкретной реализации(компилятора) - как и что организовать, чтобы её(реализации) поведение полностью соответствовало Стандарту.

Добавлено через 1 минуту и 16 секунд
Цитата(tdebugger @  12.10.2007,  08:44 Найти цитируемый пост)
"стандартные идентификаторы" будут реализованы в будущем

А зачем smile? Ты примерно представляешь, как устроен компилятор?


--------------------
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
PM Jabber   Вверх
FiMa1
Дата 12.10.2007, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: 5
Всего: 6



Цитата(Fazil6 @ 11.10.2007,  18:05)
FiMa1, ты серьёзно? 
где тема о константных ссылках  и зачем использовать передачу по ссылке и константной ссылке
Не раскрыта тема "Зачем возвращать ссылки из функций".
Если уж советовать возвращать ссылку на static переменную, то нужно следом писать статью о том насколько это некрасиво и чем черевато.

Отличия указателей от ссылок
  • Ссылка позволяет косвенно манипулировать объектом, точно так же, как это делается с помощью указателя. Однако эта косвенная манипуляция не требует специального синтаксиса, необходимого для указателей.
  • Ссылка должна быть инициализирована при ее объявлении. Хотя, как мы говорили, ссылка очень похожа на указатель, она должна быть инициализирована не адресом объекта, а его значением.
Дополнение: Если мы определяем ссылки в одной инструкции через запятую, перед каждым объектом типа ссылки должен стоять амперсанд (&) – оператор взятия адреса (точно так же, как и для указателей).
Код
// определено два объекта типа int
int ival = 1024, ival2 = 2048;

// определена одна ссылка и один объект
int &rval = ival, rval2 = ival2;

// определен один объект, один указатель и одна ссылка
int inal3 = 1024, *pi = ival3, &ri = ival3;

// определены две ссылки
int &rval3 = ival3, &rval4 = ival2;


Когда следует возвращать ссылки и делать их константными?
Внимательно читаем здесь Константные ссылки и указатели, константные методы классов

Когда использовать передачу константных ссылок?
Объект, как правило, передается по константной ссылке для предотвращения его изменения в процессе передачи и обработки получателем. Кроме того такой подход позволяет избежать копирования всех полей объекта класса, как это было бы с передачей его по значению и, следовательно, избежать лишних затрат.
Аналогичную функциональность можно реализовать и с применением константных указателей на константы, но это потребует наличия специального синтаксиса, присущего для указателей.

В общем примерно в том духе. А вообще ДА И ВОЗДАСТСЯ ИЩУЩЕМУ!
PM   Вверх
archimed7592
Дата 12.10.2007, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



FiMa1, ты сам эти мануалы пишешь smile?


--------------------
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
PM Jabber   Вверх
Fazil6
Дата 12.10.2007, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(FiMa1 @  12.10.2007,  11:05 Найти цитируемый пост)
Отличия указателей от ссылокСсылка позволяет косвенно манипулировать объектом, точно так же, как это делается с помощью указателя. Однако эта косвенная манипуляция не требует специального синтаксиса, необходимого для указателей.Ссылка должна быть инициализирована при ее объявлении. Хотя, как мы говорили, ссылка очень похожа на указатель, она должна быть инициализирована не адресом объекта, а его значением.

ссылка намного сильнее отличается от указателя чем тебе кажется
различия ссылок и указателей
PM MAIL   Вверх
FiMa1
Дата 12.10.2007, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: 5
Всего: 6



Цитата(archimed7592 @ 12.10.2007,  11:11)
FiMa1, ты сам эти мануалы пишешь smile?

И да и нет.. не люблю/некогда изобретать велосипед, если что-то есть в инете на тему, то анализ найденного, выборка, copy, небольшое редактирование, дополнение и paste. Я ведь к чему и подвожу ДА И ВОЗДАСТСЯ ИЩУЩЕМУ  smile !
Новички, вы просто не льстите себе, в 99,9% случаев вы не нашли новой закономерности/ошибки компилятора.... и, наверняка, вопрос ваш не оригинален, уже не раз поднимался и был решен.
1. Обязательно прочитайте следующее:
Вредные советы 
Как правильно задавать вопросы
2. Обязательно пробуйте искать существующее решение вашего вопроса:
Vingrad Search
Поисковые системы
3. Никогда не задавайте следующих вопросов:
- Что лучше С или С++ и с чего начать?
- Где взять книги по С/С++ и какие?
- Я новичок в программировании, дайте мне задание...
Ответы для себя и дискуссии на эти вопросы вы сможете найти в любом месте Интернета.
Цитата
ссылка намного сильнее отличается от указателя чем тебе кажется
различия ссылок и указателей

Fazil6, большое спасибо! Обязательно прочту.

Это сообщение отредактировал(а) FiMa1 - 12.10.2007, 11:46
PM   Вверх
archimed7592
Дата 12.10.2007, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(FiMa1 @  12.10.2007,  11:43 Найти цитируемый пост)
И да и нет.. не люблю/некогда изобретать велосипед, если что-то есть в инете на тему, то анализ найденного, выборка, copy, небольшое редактирование, дополнение и paste. Я ведь к чему и подвожу ДА И ВОЗДАСТСЯ ИЩУЩЕМУ  smile !

Ну, во-первых, если копипастишь, то обязательна ссылка на оригинал(ибо не воздастся плагиатчику...), а, во-вторых, из моего опыта общения с тобой мне показалось, что тебе рановато мануалы писать...


--------------------
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
PM Jabber   Вверх
FiMa1
Дата 12.10.2007, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: 5
Всего: 6



Цитата
Ну, во-первых, если копипастишь, то обязательна ссылка на оригинал(ибо не воздастся плагиатчику...),

Ссылки всегда присутствуют...
Цитата
а, во-вторых, из моего опыта общения с тобой мне показалось, что тебе рановато мануалы писать...

Ok, молчу  smile 
PM   Вверх
mrbrooks
Дата 12.10.2007, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 2
Всего: 306



Цитата(archimed7592 @ 12.10.2007,  12:38)
Цитата(FiMa1 @  12.10.2007,  11:43 Найти цитируемый пост)
И да и нет.. не люблю/некогда изобретать велосипед, если что-то есть в инете на тему, то анализ найденного, выборка, copy, небольшое редактирование, дополнение и paste. Я ведь к чему и подвожу ДА И ВОЗДАСТСЯ ИЩУЩЕМУ  smile !

Ну, во-первых, если копипастишь, то обязательна ссылка на оригинал(ибо не воздастся плагиатчику...), а, во-вторых, из моего опыта общения с тобой мне показалось, что тебе рановато мануалы писать...

Э нее батенька вы не правы. Пускай пишет. как никак повторение - мать учения. Если человек хочет писать - пускай пишет. Сто пудово кому то поможет. 
Так что пиши  FiMa1 - если будет время - почитаем - все равно порою на работе делать не фиг smile 
PM MAIL   Вверх
DreLaZ
Дата 12.10.2007, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 26.9.2007

Репутация: 1
Всего: 1



Я пользуюсь Borland C++ 4.5 (1991-1994)
в коде программы надо писать <iostream.h> и std  при написании проги не надо.
В книге написано что это старинный компилятор, но где достать новый компиллятор и есть ли большое отличие?
PM MAIL   Вверх
FiMa1
Дата 12.10.2007, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: 5
Всего: 6



Цитата(DreLaZ @ 12.10.2007,  14:22)
где достать новый компиллятор и есть ли большое отличие?

DreLaZ, молодец! Твой вопрос действительно оригинален и не поднимался... по крайней мере в данном треде он уже не поднимался целых 17 постов...
Компиляторы и IDE для C++
ЗЫЖ: для кого пишем  smile ...
PM   Вверх
Dronchik
Дата 12.10.2007, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Звукач ёмаё
**


Профиль
Группа: Участник
Сообщений: 451
Регистрация: 1.5.2007

Репутация: 0
Всего: 37



http://www.microsoft.com/downloads/details...;displaylang=en

Добавлено через 1 минуту и 27 секунд
Visual C++ 9


--------------------
Вместо слов делай дело, от которого ты фанатеешь. (с)

PM MAIL WWW ICQ   Вверх
DreLaZ
Дата 12.10.2007, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 26.9.2007

Репутация: 1
Всего: 1



Компиляторы и IDE для C++
Эту тему я уже читал. Все подряд качать не в сосотоянии.
Каким компиллятором посоветуете мне пользоваться (чтоб было без .h)?

Это сообщение отредактировал(а) DreLaZ - 12.10.2007, 14:55
PM MAIL   Вверх
zkv
Дата 12.10.2007, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(DreLaZ @  12.10.2007,  14:53 Найти цитируемый пост)
Каким компиллятором посоветуете мне пользоваться

Microsoft Visual Studio 2005 Express Edition
PM MAIL   Вверх
FiMa1
Дата 12.10.2007, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: 5
Всего: 6



Да, вот еще что, не удержался что бы не добавить, дорогие новички, пожалуйста не начинайте учиться программировать с VCL приложений в Borland C++ Builder, т.е. приложений, использующих визуальные компоненты. Начинайте учиться программировать с консольных приложений.
Для BCB 6.0: File->New->Other, выбираем Console Wizard, жмем Ok, в следующем окне выбираем язык исходного кода создаваемой программы (С/С++) и снова Ok.
PM   Вверх
DreLaZ
Дата 12.10.2007, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 26.9.2007

Репутация: 1
Всего: 1



Цитата(zkv @ 12.10.2007,  15:21)
Цитата(DreLaZ @  12.10.2007,  14:53 Найти цитируемый пост)
Каким компиллятором посоветуете мне пользоваться

Microsoft Visual Studio 2005 Express Edition

Кстати, он у меня был. Он также не хочет компилить
Код

#include <iostream>

int main()
{
std::cout << "Hello";
return 0;
}

выдает ошибку
Код

Compiling...
c:\msvc\bin\hello.cpp
c:\msvc\bin\hello.cpp(1) : fatal error C1083: Cannot open include file: 'iostream': No such file or directory

 CL returned error code 2.
HELLO.CPP - 1 error(s), 0 warning(s)

PM MAIL   Вверх
archimed7592
Дата 12.10.2007, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(DreLaZ @  12.10.2007,  15:39 Найти цитируемый пост)
Кстати, он у меня был. Он также не хочет компилить

Ну это уже что-то из разряда фантастики smile.
Есть два варианта:
1. Ты ни разу не написал этот код руками(или написал, но после постояно копипастишь его), а в нём, к примеру, может буква "е" к примеру русским написана - попробуй ручками написать smile.
2. У тебя талантище устанавливать компиляторы - толи ты постоянно сам удаляешь этот файл, то ли ещё чего делаешь smile.


--------------------
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
PM Jabber   Вверх
DreLaZ
Дата 12.10.2007, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 26.9.2007

Репутация: 1
Всего: 1



Кстати, все и всегда пишу своими руками. Проблема решена: на компе стоял MVS 1.52 и MSV 2005.
Пытался компилить в MVS 1.52 smile 
PM MAIL   Вверх
Rickert
Дата 12.10.2007, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 0
Всего: 52



Цитата(DreLaZ @  12.10.2007,  16:06 Найти цитируемый пост)
Кстати, все и всегда пишу своими руками.

Уважаю smile 


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
DreLaZ
Дата 12.10.2007, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 26.9.2007

Репутация: 1
Всего: 1



Установил Microsoft Visual Studio 2005 Express Edition (2,7Gb-наверное нормальной конфигурации).
При запуске проги поставил стандартные настройки с++. Но не могу разобраться в проге. Что выбрать в New (глаза разбегаются при выборе), чтобы написать код программы? 
PM MAIL   Вверх
archimed7592
Дата 12.10.2007, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 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
PM Jabber   Вверх
DreLaZ
Дата 12.10.2007, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 26.9.2007

Репутация: 1
Всего: 1



Я так понял, что Microsoft Visual Studio 2005 Express Edition усовершенствованный С++?
И там "другая номенкулатура".
Я новичек в с++ и прогал тока на borland c++ 4.5
PM MAIL   Вверх
archimed7592
Дата 12.10.2007, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(DreLaZ @  12.10.2007,  17:42 Найти цитируемый пост)
Я так понял, что Microsoft Visual Studio 2005 Express Edition усовершенствованный С++?
И там "другая номенкулатура".

Скажем так: любой компилятор вводит свои расширения(ибо стандарт некоторые вещи вообще не оговаривает, к примеру, как создать динамическую библиотеку аля 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
PM Jabber   Вверх
DreLaZ
Дата 12.10.2007, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 26.9.2007

Репутация: 1
Всего: 1



Цитата(archimed7592 @ 12.10.2007,  17:47)
Цитата(DreLaZ @  12.10.2007,  17:42 Найти цитируемый пост)
Я так понял, что Microsoft Visual Studio 2005 Express Edition усовершенствованный С++?
И там "другая номенкулатура".

Скажем так: любой компилятор вводит свои расширения(ибо стандарт некоторые вещи вообще не оговаривает, к примеру, как создать динамическую библиотеку аля dll/so).
Что ты под номенклатурой понимаешь?

Ну к примеру написать программу на паскале, чтоб она выводила "Hello" и аналогичную на с++. Один и тот же результат, но разный код. Так и между borland с++ 4,5 и MVS 2005 Express Edition. То чему я научился в с++ я не могу использовать в MVS S 2005 Express Edition. Хотя почитав немного лит-ры по нему можно переучиться. Но стоит ли?
зы может, что я что-то делаю в MVS 2005 Express Edition неправильно. Ведь там много настроек при выборе нового файла.  smile 

Это сообщение отредактировал(а) DreLaZ - 12.10.2007, 18:00
PM MAIL   Вверх
archimed7592
Дата 12.10.2007, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 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
PM Jabber   Вверх
DreLaZ
Дата 12.10.2007, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 26.9.2007

Репутация: 1
Всего: 1



Начну с простого. Книга меня учила (занимаюсь самообучением), для того чтобы вывести на экран надпись: надо подключить библиотекy iostream описать функцию main и тд.............
т.е. имеем прогу
Код

#include <iostream.h>  //книга гласит, что надо подключать iostream без .h
                                      
int main()
{
cout << "Hello!!!!!"; // книга гласит, что перед cout надо писать std:: 
                                //и только в старинных компиляторах пишется без него, обладателем               
                                //которого(с++ 4,5) являюсь я
return 0;
}

прога компилится без проблем в borland c++ 4.5, а также в visual studio 1.52.
А прога  представленная ниже, которую представляет книга не компилится в этих 2-ух компилляторах.
Код

#include <iostream> 
int main()
{
std::cout << "Hello!!!!!"; 
return 0;
}

В этой же теме мне посоветовали использовать MVS 2005 Express Edition. Но я не могу разобраться в ней и так понял, что к простому с++ она не имеет отношения(код по другому пишется, хотя некоторые моменты похожы). Также как билдер к с++
зы помогите определиться с компиллятором
PM MAIL   Вверх
archimed7592
  Дата 12.10.2007, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(DreLaZ @  12.10.2007,  18:22 Найти цитируемый пост)
visual studio 1.52

Это что?

Цитата(DreLaZ @  12.10.2007,  18:22 Найти цитируемый пост)
/книга гласит, что надо подключать iostream

Плохая книга, раз не сказали, что нужно подключать ещё и ostream, а то что писать return 0 в main нафик не нужно smile.

Цитата(DreLaZ @  12.10.2007,  18:22 Найти цитируемый пост)
MVS 2005 Express Edition.

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, к примеру).

Открывается редактор. Там пишешь
Код

#include <ostream> 
#include <iostream> 

int main()
{
std::cout << "Hello!!!!!"; 
return 0;
}


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
PM Jabber   Вверх
Dronchik
Дата 12.10.2007, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Звукач ёмаё
**


Профиль
Группа: Участник
Сообщений: 451
Регистрация: 1.5.2007

Репутация: 0
Всего: 37



А на Visual C++ 6 всё это пишется так
Код

#include <iostream.h> 

int main()
{
cout << "Hello!!!!!"; 
return 0;
}




--------------------
Вместо слов делай дело, от которого ты фанатеешь. (с)

PM MAIL WWW ICQ   Вверх
DreLaZ
Дата 12.10.2007, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 26.9.2007

Репутация: 1
Всего: 1



Большое спасибо!!! Всё получилось.
Цитата

Это что?visual studio 1.52

вообще-то microsoft visual c++ 1.52 (cкачал с инета)
Цитата

Плохая книга, раз не сказали, что нужно подключать ещё и ostream, а то что писать return 0 в main нафик не нужно 

Книга "с++ за 21 день" (для новичка думаю как раз, потом можно посмотреть что-то другое).
Зачем подключать ostream? Согласен, что и return там не нужен.
зы что еще изменилось из стандартов не считая .h и std?

Добавлено через 1 минуту и 10 секунд
Цитата(Dronchik @ 12.10.2007,  18:55)
А на Visual C++ 6 всё это пишется так
Код

#include <iostream.h> 

int main()
{
cout << "Hello!!!!!"; 
return 0;
}


Оно и на Borland c++ 4.5 также пишется.
PM MAIL   Вверх
archimed7592
Дата 12.10.2007, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(DreLaZ @  12.10.2007,  19:02 Найти цитируемый пост)
вообще-то microsoft visual c++ 1.52 (cкачал с инета)

Покажи скриншот, а? А лучше ещё и ссылку дай на это чудо smile.

Цитата(DreLaZ @  12.10.2007,  19:02 Найти цитируемый пост)
Зачем подключать ostream?

Да я шутю smile. Ещё не сделали такой компилятор, который при отсутствии ostream ругнулся бы, а когда будут создавать новый супер-пупер компилятор, обязательно задумаются, что есть туева хуча книг в которых описано немного иначе и, самое главное, туева хуча программ, которые просто перестанут компилироваться, так что сделают так, чтобы работало и с iostream(на самом деле, чтобы сделать, чтобы не работало придётся немало потрудиться smile).

Ну фишка в том, что, когда ты пишешь std::cout << blablabla; ты по сути вызываешь std::cout::operator<<(blablabla); или std::operator<<(std::cout, blablabla); (в зависимости от типа blablabla... кстати могут быть и ещё более извращённые случаи).
Так вот, Стандарт оговаривает то, что iostream содержит объявления объекта cout, но не гарантирует того, что этот заголовочный содержит определение класса basic_ostream(экземпляром которого cout и является). Т.о. может сработать ADL и вызваться не тот оператор или вообще может не скомпилировать. Под "может" я подразумеваю имеет право по Стандарту - в реальности всё конечно работает и без ostream.


Цитата(DreLaZ @  12.10.2007,  19:02 Найти цитируемый пост)
Согласен, что и return там не нужен.

А откуда такая согласность smile ?
Ф-ция, возвращающая не void(в данном случае int) должна что-нибудь возвращать, разве нет? smile 
Просто Стандарт явно оговаривает, что, если main ничего не возвращает явно, то компилятор должен неявно вставить туда return 0; smile

Цитата(DreLaZ @  12.10.2007,  19:02 Найти цитируемый пост)
зы что еще изменилось из стандартов не считая .h и std?

Ну, учитывая то, что на момент появления BC-4.5 Стандарта не было вообще, то очень много smile.
Из очень заметного - 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
PM Jabber   Вверх
DreLaZ
Дата 12.10.2007, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 26.9.2007

Репутация: 1
Всего: 1



Цитата

Покажи скриншот, а? А лучше ещё и ссылку дай на это чудо

вот это ЧУДО
PM MAIL   Вверх
archimed7592
Дата 12.10.2007, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Да уж... Раритет smile.


--------------------
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
PM Jabber   Вверх
Rickert
Дата 13.10.2007, 06:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 0
Всего: 52



archimed7592
Насколько мне известно из книги "С++: стандартная библиотека" от Николая Джосьютиса:
по стандарту принято, чтобы main Описывался след. образом:
Код

int main(int argc, char** argv)
{
  return 0;
}

При успешном завершении - 0.



--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
tdebugger
Дата 13.10.2007, 07:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 20.1.2007

Репутация: нет
Всего: 4



Хочу предупредить о такой специфической ошибке - если в среде VS создаете визардом консольный проект, то #include <iostrem> надо прописывать в файле stdafx.h, а не там, где main...  
--------------------
ТЕХНОЛОГИЯ "JAVA"  НЕ ПРЕДНАЗНАЧЕНА ДЛЯ УПРАВЛЕНИЯ ЯДЕРНЫМИ УСТАНОВКАМИWindows98 License.txt
PM MAIL MSN   Вверх
archimed7592
Дата 13.10.2007, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



tdebugger, не стоит предупреждать о том, чего толком не понимаешь smile.
Если отключены precompiled headers(потом я и показывал на примере empty project), то stdafx.* можно вообще удалить.
Если включены, то единственное условие, которое накладывается на модули трансляции - это, чтобы первым include'ом был stdafx.h - в остальном модули ничем не отличаются.

Rickert, эхх... Если бы ещё все книги правильно писали...

Цитата(IS-3.6.1/2 Main function)
An implementation shall not predefine the main function. This function shall not be overloaded. It shall
have a return type of type int, but otherwise its type is implementation-defined. All implementations
shall allow both of the following definitions of main:

Код

int main() { /* ... */ }

and
Код

int main(int argc, char* argv[]) { /* ... */ }


Цитата(IS-3.6.1/5 Main function)

A return statement in main has the effect of leaving the main function (destroying any objects with automatic
storage duration) and calling exit with the return value as the argument. If control reaches the end
of main without encountering a return statement, the effect is that of executing

Код

return 0;




--------------------
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
PM Jabber   Вверх
Rickert
Дата 13.10.2007, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 0
Всего: 52



Ну и где правда?


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
iura
Дата 13.10.2007, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 13.10.2007

Репутация: нет
Всего: нет



как получу доступ к IDE
PM MAIL   Вверх
tdebugger
Дата 13.10.2007, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 20.1.2007

Репутация: нет
Всего: 4



Цитата(archimed7592 @  12.10.2007,  08:56 Найти цитируемый пост)
Имеет право не существовать. Это интимное дело конкретной реализации

Согласен.

Цитата(archimed7592 @  12.10.2007,  08:56 Найти цитируемый пост)
А зачем ? Ты примерно представляешь, как устроен компилятор?

Да, но это здесь причем. Не говоря  уж о том, что с инклудными файлами работает препроцессор...

Цитата(archimed7592 @  13.10.2007,  09:07 Найти цитируемый пост)
tdebugger, не стоит предупреждать о том, чего толком не понимаешь

Ты знаешь - молодец, а некоторые досадные ошибки делают...
--------------------
ТЕХНОЛОГИЯ "JAVA"  НЕ ПРЕДНАЗНАЧЕНА ДЛЯ УПРАВЛЕНИЯ ЯДЕРНЫМИ УСТАНОВКАМИWindows98 License.txt
PM MAIL MSN   Вверх
archimed7592
Дата 13.10.2007, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(Rickert @  13.10.2007,  09:37 Найти цитируемый пост)
Ну и где правда? 

С трёх раз угадаешь? Ну ладно, приведу аналогию:
Есть УК-РФ в котором сказано за убийство человека светит X лет. Есть недописатель недолитературы, который утверждает что за убийство человека в Росии сажают на Y лет. Кто прав?

Скорее всего, как всегда выдрано из контекста и неправильно понято тобой и писатель тут не при чём(Джосатиса не читал, но слышал только хорошие отзывы).


Цитата(iura @  13.10.2007,  11:32 Найти цитируемый пост)
как получу доступ к IDE 

smile.
Ребят, особенно новички: Стандарт ISO/IEC 14882:2003 - это закон. Любой компилятор("IDE") - это всего лишь реализация, которая не всегда соответствует Стандарту и не всегда результат его работы обязан работать "правильно"(j = (i++) + (i++); яркий тому пример).


Цитата(tdebugger @  13.10.2007,  18:41 Найти цитируемый пост)
Да, но это здесь причем. Не говоря  уж о том, что с инклудными файлами работает препроцессор...

Угу, но по стандарту компиляция модуля трансляции - это монолитный процесс, а то что конкретные реализации разбивают его на этапы(препроцессинг, компиляция, сборка) - это, опять же, их интимное дело.
Я имел ввиду то, что делать iostream(и всё стандартную библиотеку) абстракцией - это дороже, чем просто реализовать её "с нуля"(как будто в компиляторе её нет) в неабстрактных файлах, которые "СУЩЕСТВУЮТ", тем более, что Стандарт предоставляет для этого все возможности.


Цитата(tdebugger @  13.10.2007,  18:41 Найти цитируемый пост)
Ты знаешь - молодец, а некоторые досадные ошибки делают... 

Я тебе о том, что совет твой не правильный. Общий совет выглядит так: любой модуль трансляции должен начинаться с #include "stdafx.h", а то что лично ты предпочитаешь запихивать все заголовочные файлы в stdafx(и не писать их в самих модулях) - это плохо, ибо stdafx нужен для precompiled headers, а никак не для всеобщего сборища зависимостей. Не надо учить новичков плохому стилю smile.


--------------------
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
PM Jabber   Вверх
Rickert
Дата 14.10.2007, 06:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 0
Всего: 52



archimed7592, сам суди:
user posted image


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
archimed7592
Дата 14.10.2007, 07:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Rickert, ну и сравни теперь это с тем что ты сказал
Цитата(Rickert @  13.10.2007,  06:05 Найти цитируемый пост)
archimed7592
Насколько мне известно из книги "С++: стандартная библиотека" от Николая Джосьютиса:
по стандарту принято, чтобы main Описывался след. образом:
    
int main(int argc, char** argv)
{
  return 0;
}

При успешном завершении - 0.

Я ничего общего не вижу smile. Наоборот, как и предполагал - Джосатис, в лучших традициях, описал этот вопрос наиболее полно...


--------------------
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
PM Jabber   Вверх
MAKCim
Дата 14.10.2007, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(archimed7592 @  13.10.2007,  19:15 Найти цитируемый пост)
j = (i++) + (i++)

если бы стандартизовать порядок вычисления (например слева направо)
то никакой неоднозначности бы не было
1) temp1 = i
2) i = i + 1
3) temp1 = temp1 + i
4) i = i + 1
5) j = temp1
таким образом однозначно раскручивается любой сложности выражение
Цитата

i += ++i - i-- + i++

разворачиваем в 
Цитата

i = i + ++i - i-- + i++

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 = 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


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
archimed7592
Дата 14.10.2007, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



MAKCim, как только договорюсь с ГОСТ'ом о том, чтобы принимать участие в работе WG21, так сразу займусь этим вопросом smile.
Нет, на самом деле, мы же не стандартизируем ничего - есть Стандарт, мы и компилятор ему пытаемся следовать(для того он и нужен - чтобы все были максимально довольны).

И напоследок: ты не задумывался, почему этот порядок не стандартизирован smile?


--------------------
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
PM Jabber   Вверх
MAKCim
Дата 14.10.2007, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(archimed7592 @  14.10.2007,  10:08 Найти цитируемый пост)
И напоследок: ты не задумывался, почему этот порядок не стандартизирован smile

просвети  smile 
на самом деле не задумывался

Добавлено через 2 минуты и 2 секунды
Цитата(archimed7592 @  14.10.2007,  10:08 Найти цитируемый пост)
Нет, на самом деле, мы же не стандартизируем ничего - есть Стандарт, мы и компилятор ему пытаемся следовать(для того он и нужен - чтобы все были максимально довольны).

я не понимаю, почему стандарт не может обязать производить вычисления в определенном порядке  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
archimed7592
Дата 14.10.2007, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(MAKCim @  14.10.2007,  10:10 Найти цитируемый пост)
просвети
на самом деле не задумывался

Ты вот так любишь асм, а за что? За скорость smile?
Вот и здесь тоже: оптимизатору даётся свобода действий.


--------------------
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
PM Jabber   Вверх
MAKCim
Дата 14.10.2007, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(archimed7592 @  14.10.2007,  10:22 Найти цитируемый пост)
Вот и здесь тоже: оптимизатору даётся свобода действий. 

аргумент
тут и не поспоришь  smile 
хотя тут можно включить следующую логику в действия оптимизатора:
1) если какая либо переменная изменяется в правой части выражения 2 и более раз => использовать стандартизованный порядок вычисления для нее, иначе - порядок определяется реализацией
2) переменная изменяется в правой части выражения <=> к ней применяются следующие операторы
а) префиксные и постфиксные ++, --
б) +=, -=, *=, /=, >>=, <<=, %=, &=, |=, ^=

Это сообщение отредактировал(а) MAKCim - 14.10.2007, 11:02


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
archimed7592
Дата 14.10.2007, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Макс, жжошь smile.

Код

// module1.cpp

int foo(int &i, int &j)
{
    return (i++) + (j++);
}

// module2.cpp
int foo(int &i, int &j);
void bar()
{
    int i = 2;
    int j = foo(i, i);
}


И какой же порядок использовать? Или может быть Стандарту запретить раздельную компиляцию ;)? Или может обязать компоновщик отслеживать такие связи?

Добавлено через 1 минуту и 54 секунды
Кстати, понятий оптимизатора и его логики в Стандарте нет как таковых smile.


--------------------
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
PM Jabber   Вверх
MAKCim
Дата 14.10.2007, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



archimed7592
усилим алгоритм
для ссылок и указателей применяем стандартизованный порядок
Цитата(archimed7592 @  14.10.2007,  10:40 Найти цитируемый пост)
Кстати, понятий оптимизатора и его логики в Стандарте нет как таковых 

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


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Rickert
Дата 14.10.2007, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 0
Всего: 52



archimed7592, там указано два варианта.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
archimed7592
Дата 14.10.2007, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(Rickert @  14.10.2007,  16:27 Найти цитируемый пост)
archimed7592, там указано два варианта. 

Я когда-нибудь утверждал что вариант только один? Скорее ты говорил про один вариант, а я лишь толковал о том, что конкретно в main return не обязателен smile.


MAKCim, это был всего-лишь один маленький пример сразу промелькнувший в голове, а если подумать, думаю таких косяков можно много нарыть smile. Те же указатели(аналогичный пример). Не стоит оно того, короче говоря.
В конце концов: j = ++i + i; - здесь переменная меняется только один раз, но, тем не менее, результат не определён smile.


--------------------
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
PM Jabber   Вверх
Sketch
Дата 15.10.2007, 03:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 15.10.2007

Репутация: нет
Всего: нет



Совсем уж к чайниким по Си себя не отношу ,не подобная задача завела меня в тупик, надеюсь, кто-нибудь растолкует что к чему smile
Существует ли функция( или алгоритм), в Си( Си++), позволяющая воспринимать строку, введимую с клавиатуры как часть кода программы.
Например, ввод двух любых (по желанию пользователя) математических функций, по которым в дальнейшем ведётся рассчет.  
PM MAIL   Вверх
DjoNIK
Дата 15.10.2007, 07:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 28.9.2006
Где: Питер/Георгиевск

Репутация: 4
Всего: 5



Цитата

Существует ли функция( или алгоритм), в Си( Си++), позволяющая воспринимать строку, введимую с клавиатуры как часть кода программы.

по идее - нет! Ведь данные и код - две вещи, которые разделены в памяти.


--------------------
- Плесни-ка мне холодного кипятку.
- Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды?
- Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку.
(разговор петербуржца и москвича)
PM MAIL ICQ   Вверх
archimed7592
Дата 15.10.2007, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 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
PM Jabber   Вверх
zkv
Дата 15.10.2007, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



а питон может помочь в этом деле? 
сам не знаю о нем ничего, поэтому это именно вопрос, а не совет.

Цитата(archimed7592 @  15.10.2007,  08:18 Найти цитируемый пост)
и компилировать её на лету. 

 smile 
PM MAIL   Вверх
archimed7592
Дата 15.10.2007, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(zkv @  15.10.2007,  09:06 Найти цитируемый пост)
а питон может помочь в этом деле? 

Только если Boost.Python smileСам о нём ничего не знаю.


Цитата(zkv @  15.10.2007,  09:06 Найти цитируемый пост)
Цитата(archimed7592 @  15.10.2007,  08:18 Найти цитируемый пост)
и компилировать её на лету. 

smile

AFAICS, имея компилятор нет ничего сложного делать dll'ки на лету. IIRC, у нас один проект именно так и "подгружал" пользовательские ф-ции smile.



--------------------
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
PM Jabber   Вверх
tdebugger
Дата 6.11.2007, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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
PM MAIL MSN   Вверх
archimed7592
Дата 6.11.2007, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(tdebugger @  6.11.2007,  20:08 Найти цитируемый пост)
int d;
int d;

Ну, хоть и gcc не воспринимает это как ошибку(не знаю должен ли), но это немного странно - делать две переменные с одним именем.


Цитата(tdebugger @  6.11.2007,  20:08 Найти цитируемый пост)
какие в нем присутствуют ошибки? 

Синтаксических - никаких. Но ф-ция делает какие-то странные действия.

зы. Используй тег 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
PM Jabber   Вверх
tdebugger
Дата 6.11.2007, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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
PM MAIL MSN   Вверх
tdebugger
Дата 6.11.2007, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 20.1.2007

Репутация: нет
Всего: 4



Цитата(archimed7592 @  6.11.2007,  20:14 Найти цитируемый пост)
Здесь точка с запятой

Возможно, хотя микроскоповский© компилятор без нее ругается...
Цитата(archimed7592 @  6.11.2007,  20:14 Найти цитируемый пост)
 Но ф-ция делает какие-то странные действия.

Не суть важно. Синтаксических ошибок здесь действительно нет(за исключением однострочных комментариев, они, вроде как, в С++ появились), я хотел обратить внимание на определение функции, а конкретнее - на тип возвращаемого значения...
  Меня давно занимал вопрос: почему в С++ после описания типа нужно ставить точку с запятой, хотя в других языках как то и без нее обходятся. И вот неожиданная разгадка - в старом добром С(без плюсов) разрешалось описывать тип там, где указывается тип возвращаемого значения функции(простите за то, что не хватает умных слов для грамотного выражения мыслей), впоследствии от такой возможности в С++ отказались, потому как гибкости не прибавляет, а ошибок - сколько угодно. Вот и пришлось добавить точку с запятой, чтобы избежать двусмысленности. 

...а может я не прав?
--------------------
ТЕХНОЛОГИЯ "JAVA"  НЕ ПРЕДНАЗНАЧЕНА ДЛЯ УПРАВЛЕНИЯ ЯДЕРНЫМИ УСТАНОВКАМИWindows98 License.txt
PM MAIL MSN   Вверх
archimed7592
Дата 6.11.2007, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(tdebugger @  6.11.2007,  22:18 Найти цитируемый пост)
 Меня давно занимал вопрос: почему в С++ после описания типа нужно ставить точку с запятой, хотя в других языках как то и без нее обходятся. И вот неожиданная разгадка - в старом добром С(без плюсов) разрешалось описывать тип там, где указывается тип возвращаемого значения функции(простите за то, что не хватает умных слов для грамотного выражения мыслей), впоследствии от такой возможности в С++ отказались, потому как гибкости не прибавляет, а ошибок - сколько угодно. Вот и пришлось добавить точку с запятой, чтобы избежать двусмысленности. 

С этого нужно было начинать smile.

Цитата(tdebugger @  6.11.2007,  22:18 Найти цитируемый пост)
...а может я не прав? 

Прав - это одно из отличий С++ от С. Об этом, IIRC, даже сказано в D&E(и, соответственно, объяснено почему это было убрано из языка).

Я сначала уже начал было тебе писать про точку с запятой после определения структуры, как вдруг заметил c-style определение ф-ции. Отсюда и вывалилось незавершённое предложение про точку с запятой, которое я забыл удалить перед постингом smile.


--------------------
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
PM Jabber   Вверх
sharp
Дата 7.11.2007, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 20.10.2007

Репутация: нет
Всего: нет



Здравствуйте. Как можно преобразовать тип double в тип char или string?
PM MAIL   Вверх
zkv
Дата 7.11.2007, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



1. потери весьма вероятны: 
Код

double doubleValue = 1.;
char charValue = static_cast<char>( doubleValue );

может имел ввиду char * ?

2. 
Код

    std::ostringstream ostr;
    ostr<<doubleValue;
    std::string stringValue = ostr.str();


Это сообщение отредактировал(а) zkv - 7.11.2007, 10:46
PM MAIL   Вверх
sharp
Дата 7.11.2007, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 20.10.2007

Репутация: нет
Всего: нет



Мне нужно именно в массив char-ов перевести. А не в char*

Это сообщение отредактировал(а) sharp - 7.11.2007, 12:39
PM MAIL   Вверх
sharp
Дата 8.11.2007, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 20.10.2007

Репутация: нет
Всего: нет



Мне нужно перевести в такую единицу измерения, которую сможет вывести в TextBox функция SetDlgItemText.
А с твоим примером zkv, компилятор ругаеться. Говорит что не может перевести из const char* в char.
PM MAIL   Вверх
sharp
Дата 8.11.2007, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 20.10.2007

Репутация: нет
Всего: нет



Я например должен сложить числа с дробями записанными пользвателем в текстбокс1 и текстбокс2 и записать сумму в текстбокс3. Я делаю по такому алгоритму: функцией GetDlgItemText присваиваю текстовые значения перемынным. Функцией atof перевожу из char в double. Выполняю необходимые действия. Перевожу обратно в char результат(вот это и не получаеться). Записываю в textbox3 его функцией SetDlgItemText.
 
PM MAIL   Вверх
zkv
Дата 8.11.2007, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(sharp @  8.11.2007,  07:45 Найти цитируемый пост)
А с твоим примером zkv, компилятор ругаеться. Говорит что не может перевести из const char* в char. 

в моем примере нигде не фигурирует const char*  smile 
PM MAIL   Вверх
kurtis
Дата 8.11.2007, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 10.8.2007

Репутация: нет
Всего: нет



помогите что вклиниваюсь,  но что-то я сильно торможу...
Код

struct asd{
    unsigned int lamps[20];        
    int Null[] = {15,15,15,15,15};     .//ОШИБКА
    unsigned int aaaa;
} STRUCT_FROM_OPAL;

почему в структуре нельзя инициализировать массив???(интересует именно C89 либо C99)

Это сообщение отредактировал(а) kurtis - 8.11.2007, 16:57
PM MAIL   Вверх
archimed7592
Дата 8.11.2007, 17:11 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(kurtis @  8.11.2007,  16:56 Найти цитируемый пост)
почему в структуре нельзя инициализировать массив???

Ну, примерно потому же, почему нельзя инизиализировать int в typedef'е:
Код

typedef int b = 15;



--------------------
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
PM Jabber   Вверх
sharp
Дата 9.11.2007, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 20.10.2007

Репутация: нет
Всего: нет



Цитата(zkv @  8.11.2007,  16:36 Найти цитируемый пост)
в моем примере нигде не фигурирует const char*

А почему тогда компилятор выдаёт такую ошибку???
Цитата

"=" can not convert from "char" to "const char*"

PM MAIL   Вверх
archimed7592
Дата 9.11.2007, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(sharp @  9.11.2007,  18:57 Найти цитируемый пост)
А почему тогда компилятор выдаёт такую ошибку???

Приведи полностью код и укажи на какую конкретно строку он ругается. Ещё компилятор озвучить неплохо было бы...


--------------------
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
PM Jabber   Вверх
NiCketT
  Дата 9.11.2007, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 10.9.2007

Репутация: нет
Всего: нет



Почему не работает такой кусок кода?
Код

#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;

 string SS(unsigned int c, const unsigned short int st)
 {
     string s, s1; char buf;
     //переобразовывание чисел в иную систему исчисления
     do {
         sprintf(&buf, "%u", c%st);
         s+=buf; //остаток - рузультат
         c=c/st;
     } while (c!=0);
     //повернуть s;
     for (unsigned int i=s.size(); i>=0; i--) s1+=s[i];

     return s1;
 }


int main()
{
  //тестирование четырехбитного числа
  unsigned int N=16;
  string rez=SS(14, 2);
  cout<<rez;
  /*for (unsigned int n=0; n<N; n++)
    {
       cout.fill('0'); cout.width(4);
       cout<<SS(n, 2);
       cout.fill(' '); cout.width(8);
       cout<<n;
       cout<<(N-n)<<endl;
    } */

   char r;
   cin>>r;
}

Работал (вводил с клавы число, втыкал ее в функцию SS и выводил результат) а тепеь не работает. Пробовал под Борландом, ВижулСтудио и gcc - везде виснит!  smile (
PM MAIL   Вверх
sharp
Дата 9.11.2007, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 20.10.2007

Репутация: нет
Всего: нет



Код

double doubleValue = 1.;    
char charValue = static_cast<char>( doubleValue );
SetDlgItemText(hDlg, IDC_EDIT3, charValue); //вот здесь и ругаеться

Компилятор Visual C++ 6

Это сообщение отредактировал(а) sharp - 9.11.2007, 19:37
PM MAIL   Вверх
archimed7592
Дата 9.11.2007, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(sharp @  9.11.2007,  19:36 Найти цитируемый пост)
SetDlgItemText(hDlg, IDC_EDIT3, charValue); //вот здесь и ругаеться

Насколько я понимаю, в эту ф-цию нужно передавать c-строку, а ты пытаешься передать символ. Как это относится к примеру zkv я не догоняю smile.


--------------------
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
PM Jabber   Вверх
NiCketT
Дата 9.11.2007, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 10.9.2007

Репутация: нет
Всего: нет



уже разобрался - ошибка была гдето в форе
PM MAIL   Вверх
archimed7592
  Дата 9.11.2007, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(NiCketT @  9.11.2007,  21:12 Найти цитируемый пост)
уже разобрался - ошибка была гдето в форе 

smile.


--------------------
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
PM Jabber   Вверх
sharp
Дата 10.11.2007, 05:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 20.10.2007

Репутация: нет
Всего: нет



archimed7592, charValue у меня объявленна как charValue[10];
Попробывал преобразовать в string, выдаёт такие ошибки
Цитата

error C2079: 'ostr' uses undefined class 'basic_ostringstream<char,struct std::char_traits<char>,class std::allocator<char> >'
error C2296: '<<' : illegal, left operand has type 'double'
error C2297: '<<' : illegal, right operand has type 'double'
error C2228: left of '.str' must have class/struct/union type
error C2664: 'SetDlgItemTextA' : cannot convert parameter 3 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' t


Это сообщение отредактировал(а) sharp - 10.11.2007, 13:38
PM MAIL   Вверх
archimed7592
Дата 10.11.2007, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(sharp @  10.11.2007,  05:48 Найти цитируемый пост)
выдаёт такие ошибки

#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
PM Jabber   Вверх
magadan87
Дата 10.11.2007, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 2.11.2007
Где: Томск

Репутация: 0
Всего: 1



такой вот вопрос

Код

#define n = 10

main ()
{
  int mas[n][n]
  //или
  printf ("n=%f", n);
}


получаем ошибку "ошибка: expected expression before '=' token"
PM MAIL   Вверх
Fazil6
Дата 10.11.2007, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(magadan87 @  10.11.2007,  10:38 Найти цитируемый пост)
получаем ошибку "ошибка: expected expression before '=' token"

что по твоему define делает?
Код

#define n  10

PM MAIL   Вверх
magadan87
Дата 10.11.2007, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 2.11.2007
Где: Томск

Репутация: 0
Всего: 1



Цитата(Fazil6 @ 10.11.2007,  10:56)
Цитата(magadan87 @  10.11.2007,  10:38 Найти цитируемый пост)
получаем ошибку "ошибка: expected expression before '=' token"

что по твоему define делает?
Код

#define n  10

Точно! Извиняюсь, невнимателен. ^^
PM MAIL   Вверх
sharp
Дата 10.11.2007, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 20.10.2007

Репутация: нет
Всего: нет



archimed7592
Цитата

'SetDlgItemTextA' : cannot convert parameter 3 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' t

1 ошибка не хочет исправляться
PM MAIL   Вверх
archimed7592
Дата 10.11.2007, 13:55 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(sharp @  10.11.2007,  05:48 Найти цитируемый пост)
Попробывал преобразовать в string, выдаёт такие ошибки


Цитата(sharp @  10.11.2007,  13:40 Найти цитируемый пост)
1 ошибка не хочет исправляться 


Господа новички, телепатов здесь нет!
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
PM Jabber   Вверх
Dronchik
Дата 11.11.2007, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Звукач ёмаё
**


Профиль
Группа: Участник
Сообщений: 451
Регистрация: 1.5.2007

Репутация: 0
Всего: 37



извините. не туда запостил. удалите пожалуйста.

Это сообщение отредактировал(а) Dronchik - 11.11.2007, 08:29


--------------------
Вместо слов делай дело, от которого ты фанатеешь. (с)

PM MAIL WWW ICQ   Вверх
sharp
Дата 11.11.2007, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 20.10.2007

Репутация: нет
Всего: нет



archimed7592, извини за мою тупость. Ошибка указывала на 3 строку приведённую мной ранее. Я к  stringValue добавил .c_str() и всё заработало. Спасибо.
PM MAIL   Вверх
archimed7592
Дата 11.11.2007, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(sharp @  11.11.2007,  08:40 Найти цитируемый пост)
Ошибка указывала на 3 строку приведённую мной ранее.

Цитата(sharp @  9.11.2007,  19:36 Найти цитируемый пост)
double doubleValue = 1.;    
char charValue = static_cast<char>( doubleValue );
SetDlgItemText(hDlg, IDC_EDIT3, charValue); //вот здесь и ругаеться

В коде, который ты приводил ранее c_str вставить вообще некуда, ибо там string не используется.
Интересно, если увеличить шрифт ещё пунктов на 10, до новичков дойдёт, что телепатия - явление редкое?

Цитата(Dronchik @  11.11.2007,  08:28 Найти цитируемый пост)
извините. не туда запостил. удалите пожалуйста.

Цитата
from    Форум программистов <[email protected]>
to    [email protected],
date    Nov 11, 2007 11:29 AM
subject    Уведомление об ответе в подписанной теме
mailed-by    vingrad.ru
    
archimed7592,

Dronchik ответил в тему "Вопросник новичка", на которую Вы подписаны.

----------------------------------------------------------------------
archimed7592, извини за мою тупость. Ошибка указывалась на 3 строку приведённого мною кода ранее. Я к stringValue добавил .c_str() и всё заработало. Спасибо.
----------------------------------------------------------------------


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
PM Jabber   Вверх
Dronchik
Дата 11.11.2007, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Звукач ёмаё
**


Профиль
Группа: Участник
Сообщений: 451
Регистрация: 1.5.2007

Репутация: 0
Всего: 37



нет вроде


--------------------
Вместо слов делай дело, от которого ты фанатеешь. (с)

PM MAIL WWW ICQ   Вверх
archimed7592
Дата 11.11.2007, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 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
PM Jabber   Вверх
Dronchik
Дата 11.11.2007, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Звукач ёмаё
**


Профиль
Группа: Участник
Сообщений: 451
Регистрация: 1.5.2007

Репутация: 0
Всего: 37



archimed7592, низнаю. ПМ тебе отправил чтобы не оффтопить 


--------------------
Вместо слов делай дело, от которого ты фанатеешь. (с)

PM MAIL WWW ICQ   Вверх
kurtis
Дата 12.11.2007, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 10.8.2007

Репутация: нет
Всего: нет



как в функции r_memcpy() определить размер массива lamps, который находится в структуре data_from???

Код


unsigned char mas[] = {11,11,11,11,0xFF,0xFF,55,255};

typedef struct 
{
    unsigned char Perem1[2];                    //1
    unsigned char lamps[6];
}
STRUCT_FROM;

STRUCT_FROM data_from;


void *r_memcpy(void *dst, const void *src, unsigned char n)
{
    int i;
    unsigned char size;
    
    size = sizeof(&dst->lamps);                              //ПРОБЛЕМА ТУТ

    printf("sizeof(LAMPS):%d\n",size);
    
    for( i = n; i >= 0; i--, size--)
    {    
        ((unsigned char*)dst)[i] = ((unsigned char*)src)[i];

        if ( ( ((unsigned char*)dst)[i] == 0xFF) && (size>=0) )
            ((unsigned char*)dst)[i]--;
    }
    
    return dst;
}



int rdIn(unsigned char *mas1, unsigned int _size)

    r_memcpy((unsigned char*)&(data_from), mas1, sizeof(STRUCT_FROM));
//    for(i=0;i<sizeof(data_from.lamps);i++)
//        if(data_from.lamps[i] == 0xFF)
//            data_from.lamps[i]--;   
    return 0;
}

int main()
{
/*
......
*/

rdIn(mas,10);
/*
......
*/

return 0;
}



PM MAIL   Вверх
DjoNIK
Дата 12.11.2007, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 28.9.2006
Где: Питер/Георгиевск

Репутация: 4
Всего: 5



Цитата(kurtis @  12.11.2007,  15:43 Найти цитируемый пост)
size = sizeof(&dst->lamps);                              //ПРОБЛЕМА ТУТ

В size ты записал не размер массива, а размер указателя на первый элемент массива.

Если не ошибаюсь, то размер массива, в общем случае, невозможно определить. Поэтому в функцию всегда передается помимо указателя на сам массив еще и его размер.

PS: Извиняюсь за частое употребление слова массив.

Добавлено через 4 минуты и 46 секунд
Что-то я задумался...
Цитата(kurtis @  12.11.2007,  15:43 Найти цитируемый пост)
определить размер массива lamps

Тебе нужно узнать размерность (сколько элементов) массива или, все же, размер каждого элемента?
Если последнее, то 
Код

size = sizeof(&dst->*(lamps));



--------------------
- Плесни-ка мне холодного кипятку.
- Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды?
- Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку.
(разговор петербуржца и москвича)
PM MAIL ICQ   Вверх
kurtis
Дата 12.11.2007, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 10.8.2007

Репутация: нет
Всего: нет



мне нужно узнать количество элементов!!!
может я решаю задачу через одно место, но мне нужно все переменные в массиве lamps обработать определенным образом, а другие не трогать!!!т.е. мне нужно как-то обратится к этому массиву в структуре....как это сделать лучшим образом я незнаю....
PM MAIL   Вверх
Fazil6
Дата 12.11.2007, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(kurtis @  12.11.2007,  15:43 Найти цитируемый пост)
определить размер массива lamps, который находится в структуре data_from???

Код

STRUCT_FROM *pdst = reinteret_cast<STRUCT_FROM *>(dst);
size = sizeof(pdst->lamps)/sizeof(pdst->lamps[0]);   


Это сообщение отредактировал(а) Fazil6 - 12.11.2007, 17:28
PM MAIL   Вверх
kurtis
Дата 12.11.2007, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 10.8.2007

Репутация: нет
Всего: нет



Спасибо за интересную идею....

нужно все это оформить на жестком СИ (НЕ СИ++), а то, под что я это пишу, с Си++ не дружит(компилятора нету)!!!!=))))))


Это сообщение отредактировал(а) kurtis - 12.11.2007, 17:49
PM MAIL   Вверх
archimed7592
Дата 12.11.2007, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(Fazil6 @  12.11.2007,  17:25 Найти цитируемый пост)
STRUCT_FROM *pdst = reinteret_cast<STRUCT_FROM *>(dst);

Почему не 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
PM Jabber   Вверх
Fazil6
Дата 12.11.2007, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(archimed7592 @  12.11.2007,  18:52 Найти цитируемый пост)
Почему не static_cast

можно и static_cast
PM MAIL   Вверх
bsa
Дата 12.11.2007, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(kurtis @ 12.11.2007,  17:35)
Спасибо за интересную идею....

нужно все это оформить на жестком СИ (НЕ СИ++), а то, под что я это пишу, с Си++ не дружит(компилятора нету)!!!!=))))))

STRUCT_FROM *pdst = reinteret_cast<STRUCT_FROM *>(dst);
замени на
STRUCT_FROM *pdst = (STRUCT_FROM *)dst;
PM   Вверх
Dims
Дата 13.11.2007, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 1
Всего: 11



А что такое эти "паттерны" и как ими пользоваться?
PM MAIL   Вверх
JackYF
Дата 13.11.2007, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(Dims @  13.11.2007,  19:58 Найти цитируемый пост)
А что такое эти "паттерны" и как ими пользоваться? 

Фраза откуда выдрана вообще?

Тебя в гугле забанили?


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Fazil6
Дата 13.11.2007, 20:17 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(Dims @  13.11.2007,  19:58 Найти цитируемый пост)
А что такое эти "паттерны" и как ими пользоваться?


а что такое эти "словари" всякие да "энциклопедии" и как ими пользваться?

http://ru.wikipedia.org/wiki/Паттерн
PM MAIL   Вверх
Dims
Дата 13.11.2007, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 1
Всего: 11



smile

Ну я, наверное, понимаю в принципе, что это такое. Но никогда не пользовался и не пойму, как практически этим пользоваться. Вроде бы это не библиотеки, а какой-то набор "решений" с классами. Какое преимущество они дают? Разве не проще самому придумать класс? И наоборот, разве паттерн потом не придётся всё равно переиначивать под конкретный случай? Не получится ли так, что зазубривание паттернов и раздумья, какой же из них подойдёт для твоего случая, займёт больше времени, чем просто придумать себе класс?

Выглядит, как систематизация изобретений. Но, как я понимаю, этим пользуются. Значит, наверное, я ошибаюсь. И паттерны это не совсем то, что я думаю и в них есть какая-то польза.

Вот меня недавно спросили "какими паттернами ты пользуешься в работе". А я и не знаю, что ответить. Действительно ли эти паттерны помогают?
PM MAIL   Вверх
DjoNIK
Дата 13.11.2007, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 28.9.2006
Где: Питер/Георгиевск

Репутация: 4
Всего: 5



Цитата(Dims @  13.11.2007,  23:18 Найти цитируемый пост)
Не получится ли так, что зазубривание паттернов и раздумья, какой же из них подойдёт для твоего случая, займёт больше времени, чем просто придумать себе класс?

Если у тебя будет опыть (хотя бы небольшой), то однозначно НЕТ!


--------------------
- Плесни-ка мне холодного кипятку.
- Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды?
- Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку.
(разговор петербуржца и москвича)
PM MAIL ICQ   Вверх
archimed7592
Дата 13.11.2007, 23:58 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(Dims @  13.11.2007,  23:18 Найти цитируемый пост)
Какое преимущество они дают?

При разумном применении, получаемые преимущества - это, как минимум: гибкость, расширяемость, простота применения.


Цитата(Dims @  13.11.2007,  23:18 Найти цитируемый пост)
Разве не проще самому придумать класс?

Смотря что понимать под словами "проще". Бывает, что "проще"(меньше напрягая мозг) писать логику прямо в обработчиках событий, но реальная выгода от такой "простоты" весьма сомнительна.


Цитата(Dims @  13.11.2007,  23:18 Найти цитируемый пост)
И наоборот, разве паттерн потом не придётся всё равно переиначивать под конкретный случай?

Цель паттернов - не предоставить универсальную библиотеку, а обобщить основные, часто применяемые проектные решения.


Цитата(Dims @  13.11.2007,  23:18 Найти цитируемый пост)
Не получится ли так, что зазубривание паттернов и раздумья, какой же из них подойдёт для твоего случая, займёт больше времени, чем просто придумать себе класс?

"Зазубривание" вообще, как правило, никогда не оправдывает потраченного времени и редко приносит реальную выгоду.


Цитата(Dims @  13.11.2007,  23:18 Найти цитируемый пост)
Действительно ли эти паттерны помогают?

Да, если они "стекают с кончиков пальцев" ©. В противном случае, появляется вот такое как у тебя недопонимание "а зачем это вообще нужно?", но, со временем и опытом приходит всё.

Это сообщение отредактировал(а) 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
PM Jabber   Вверх
Dims
Дата 14.11.2007, 01:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 1
Всего: 11



Ну вот, допустим, я хочу приобрести опыт общения с паттернами. Что мне нужно делать? Справочник паттернов какой-то нарыть? И потом, решая практические задачи, пытаться выискивать в этом справочнике нужный паттерн?
PM MAIL   Вверх
archimed7592
Дата 14.11.2007, 01:52 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(Dims @  14.11.2007,  01:23 Найти цитируемый пост)
Что мне нужно делать?

Для начала попытаться понять зачем нужен каждый паттерн. Посидеть, повспоминать то что ты уже делал и подумать, где бы ты какой паттерн мог бы применить. Потом просто продолжать работать, как работал - у тебя само собой будет появляется желание сделать неуклюжую попытку применить тот или иной паттерн. Потом эти попытки станут более "уклюжими" smile. Потом перечитать книгу ещё раз(через месяц, другой).
Сама книга, неустаревающая классика жанра - GoF.

Могу только пожелать удачи в хорошем(я бы сказал очень правильном) начинании smile.


--------------------
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
PM Jabber   Вверх
VladimirC
Дата 14.11.2007, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 12.11.2007

Репутация: нет
Всего: нет



А не моглибы вы подсказать,новичку, как сделать так чтобы определенная команда,строка выполнялась только по прошествии определенного  промежутка времени? 
PM MAIL Skype   Вверх
DjoNIK
Дата 14.11.2007, 16:54 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 28.9.2006
Где: Питер/Георгиевск

Репутация: 4
Всего: 5



Цитата(VladimirC @  14.11.2007,  16:44 Найти цитируемый пост)
А не моглибы вы подсказать,новичку, как сделать так чтобы определенная команда,строка выполнялась только по прошествии определенного  промежутка времени? 

Если ты хочешь, что бы "промежуток времени" был аппаратно независим, то, если я не ошибаюсь, тебе нужно создавать отдельный поток.
Но так как ты новичок, то, возможно, цикл по сетчику тебе поможет.


--------------------
- Плесни-ка мне холодного кипятку.
- Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды?
- Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку.
(разговор петербуржца и москвича)
PM MAIL ICQ   Вверх
VladimirC
Дата 14.11.2007, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 12.11.2007

Репутация: нет
Всего: нет



а можно немножко поподробнее, как я понял просто сделать одну постоянно повторяющуюся, Х раз, команду? так? а если не сложно можно примерчик? smile  smile , очень долго мучался по этому поводу сам, но внятного у меня ничего не получилось.
PM MAIL Skype   Вверх
Dims
Дата 15.11.2007, 05:20 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 1
Всего: 11



Ну ты циклы умеешь делать? Операторы for, while, do?
PM MAIL   Вверх
VladimirC
Дата 15.11.2007, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 12.11.2007

Репутация: нет
Всего: нет



конечно ,толко что надо вписать в этот цикл? какая команда отвечает за этот счетчик? 
PM MAIL Skype   Вверх
zkv
Дата 15.11.2007, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



десять раз вызвать X();
Код

for( int i = 0; i < 10; ++i )
    X();

PM MAIL   Вверх
AndrRus
Дата 15.11.2007, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 14.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



VladimirC, если я правильно понял, то ты хочешь просто оттянуть время в программе? Если да, то самым глупым способом - это можно сделать следующим образом: складывать бесконечно малую величину каким-либо из предложенных тебе циклов, пока она не станет значимой.
PM MAIL ICQ   Вверх
bsa
Дата 15.11.2007, 23:48 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(VladimirC @ 14.11.2007,  16:44)
А не моглибы вы подсказать,новичку, как сделать так чтобы определенная команда,строка выполнялась только по прошествии определенного  промежутка времени?

Паузу можно задать определенными командами. Например sleep(unsigned sec) - пауза на sec секунд.
Можно и другими, более точными, но для этого ты должен сказать, что у тебя за ОС и какой компилятор.
PM   Вверх
VladimirC
Дата 16.11.2007, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 12.11.2007

Репутация: нет
Всего: нет



bsa спасибо этого ответа я и ждал) попробую)


PM MAIL Skype   Вверх
bsa
Дата 16.11.2007, 22:29 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(VladimirC @ 16.11.2007,  19:36)
bsa спасибо этого ответа я и ждал) попробую)

Прочти мою подпись и запомни.  smile 
PM   Вверх
kurtis
Дата 23.11.2007, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 10.8.2007

Репутация: нет
Всего: нет



скорее всего это уже где-то было, но все-таки...

В чем смысл объявления функции как static???
Код

static int sprint_dev_config(struct pci_dev *dev, char *buf, int size)


В чем смысл такой вот штуки и что она вообще значит???конктретно смущает слово struct перед функцией!!!
Код

struct pci_dev_info *pci_lookup_dev(unsigned int vendor, unsigned int dev)
{
    int min = 0,
        max = sizeof(dev_info)/sizeof(dev_info[0]) - 1;    

//     .....много разного кода.......

        return & dev_info[ i ];
    }



заранее спасибо!!!=)
PM MAIL   Вверх
JackYF
Дата 23.11.2007, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(kurtis @  23.11.2007,  14:51 Найти цитируемый пост)
struct pci_dev_info *

это тип возвращаемого значения функции.

Цитата(kurtis @  23.11.2007,  14:51 Найти цитируемый пост)
static

область видимости функции ограничивается одним модулем.



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
archimed7592
Дата 23.11.2007, 14:59 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 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
PM Jabber   Вверх
kurtis
Дата 23.11.2007, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 10.8.2007

Репутация: нет
Всего: нет



спасибо, помогло!!!=))
PM MAIL   Вверх
Hehe
Дата 18.3.2008, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 18.3.2008

Репутация: нет
Всего: нет



Проблема:
Код

generic <class T>
public interface class MyInterface
{
   T operator *(T);
};

generic<class T>
where T : MyInterface<T>
public ref class MyClass : MyInterface<MyClass<T>^>
{
public:
   //......
   virtual MyClass<T> ^operator *(MyClass<T> ^A)
   {
       return this;
   }
   void MyMethod(void)
   {
      T a,b,c;
      c = a*b;  //error C2296: '*' : illegal, left operand has type 'T'
                     //error C2297: '*' : illegal, right operand has type 'T'
   }
   //......
};
Что посоветуете? Классы и методы привел чисто систематически. Вернее так, решение-то есть - использовать не MyInterface<T>::operator *, а какую-нибудь функцию. Но как устранить эту ошибку, используя operator* ?


Это сообщение отредактировал(а) Hehe - 18.3.2008, 00:56
PM MAIL   Вверх
korian
Дата 18.3.2008, 04:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: 3
Всего: 17



generic<class T>
where T : MyInterface<T>
это что за конструкция? С++?

я так понимаю надо в объявление функции добавить MyClass<T>

Это сообщение отредактировал(а) korian - 18.3.2008, 04:08
PM   Вверх
Hehe
Дата 18.3.2008, 04:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 18.3.2008

Репутация: нет
Всего: нет



Цитата(korian @  18.3.2008,  04:07 Найти цитируемый пост)
generic<class T>
where T : MyInterface<T>
это что за конструкция? С++?

Да, это конструкция Managed C++. Говорит, что тип T унаследован от MyInterface.
Цитата(korian @  18.3.2008,  04:07 Найти цитируемый пост)
я так понимаю надо в объявление функции добавить MyClass<T>
А вот этот момент попросил бы пояснее.

Надо было, наверно, раньше написать - если использовать вместо operator *, например, operator +, то все будет замечательно.

Это сообщение отредактировал(а) Hehe - 18.3.2008, 04:40
PM MAIL   Вверх
Hehe
Дата 18.3.2008, 05:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 18.3.2008

Репутация: нет
Всего: нет



Ура. Проблема решена.
вместо вызова
Код

a*b
надо использовать 
Код

a->operator *(b)
Я полагаю, что это из-за того, что generic тип несколько особый. В смысле, наверно у него есть свои перегруженные операторы *.
PM MAIL   Вверх
Страницы: (10) [Все] 1 2 3 ... Последняя »
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.4397 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.