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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Современный "hello world", или как написать первую, программу на современном компиляторе 
:(
    Опции темы
Akeem
Дата 26.4.2008, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Юзал 6 Билдер который был поставлен на ХР
Также юзал ВС 2005 

Одно средство есть чтобы сделать так чтобы все работало -- переставить билдер. Советую ставить все что хочет поставить установщик вместе с самим билдером + сохранить сам диск на винте.


--------------------
Мир огромен и мы только муравьи в нём! (С) formicha

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


Архимед
****


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

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



Цитата(arkeyn @  26.4.2008,  11:46 Найти цитируемый пост)
какой именно посоветуеш закачать что бы там безпроблем можна было приложения 
под дос писать по книжке и желательно что бы потом чтото под виндовс писать тоже можно было. спб

Смотря что под ДОСом понимать. Если именно ДОС, то не посоветую ничего(и вряд ли кто посоветует). Если ты имеешь ввиду консольные приложения, то посоветую Visual C++ 2008 Express.


Цитата(Akeem @  26.4.2008,  11:53 Найти цитируемый пост)
Странно, что только сейчас об этом заговорили. 
Уже как 4 года говорят о том что все функции ввода/вывода находятся в std и что следует писать программу так

4 года говорят и, тем не менее, с завидной регулярностью спрашивают "а почему ... ?". Собственно говоря, см. прибитую к потолку тему "Пишем ФАК".


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


Опытный
**


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

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



Цитата(arkeyn @ 26.4.2008,  16:37)
Цитата(Akeem @ 26.4.2008,  11:53)
Странно, что только сейчас об этом заговорили. 
Уже как 4 года говорят о том что все функции ввода/вывода находятся в std и что следует писать программу так
Код


#include <iostream>
using namespace std;

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



Неплохо былобы написать int main(){...}
Это если rturn 0; а типа у мэйна нет.
PM MAIL   Вверх
Suertero-E
Дата 12.9.2009, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

#include <iostream>
using namespace std;
main()
{
cout<<"Hello world!"<<endl;
return 0;
}


Если я не ошибаюсь то правильным будет заключать 
Код
using namespace std;
 
внутри 
Код

main()
{

Тогда при написании большого кода с разными библиотеками не будут проблемы.

Таким вот способом:
Код

#include <iostream>

main()
{
using namespace std;

cout<<"Hello world!"<<endl;
return 0;
}


Это сообщение отредактировал(а) Suertero-E - 12.9.2009, 18:05
PM MAIL ICQ Skype   Вверх
zim22
Дата 12.9.2009, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



Цитата(Suertero-E @  12.9.2009,  18:04 Найти цитируемый пост)
Если я не ошибаюсь 

не ошибаешься


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


Архимед
****


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

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



Цитата(Suertero-E @  12.9.2009,  18:04 Найти цитируемый пост)
Если я не ошибаюсь то правильным будет заключать 
using namespace std;
внутри 
main()

Тогда при написании большого кода с разными библиотеками не будут проблемы.

Начинание, конечно, правильное, но сам подход не совсем соответсвует случаю. Во-первых, данный топик создавался с целью избежать вопросов "памагите, ашипка (реальная причина: iostream.h или отсутсвие квалификации std" (или, в крайнем случае, отсылать в этот топик задающих подобные вопросы). Т.е. целевой контингент "совсем новичек", которому ещё рано заморачиваться тем, чтобы в каждой функции писать using namespace std (да, кстати, "в этом нет никакого смысла" (с) Король вечеринок), а если он этого писать не будет, то следующим же вопросом он создаст тему "памагите, ашипка (реальная причина: в main есть using, в другой ф-ции using'а нет)", чего тоже хотелось избежать. Ну а, во-вторых, если иметь чёткое понимание что именно и где имеено ты пишешь, то using внутри ф-ции только обременит читабельность кода когда в реальности не даст абсолютно ничего. using внутри ф-ции необходимо делать только тогда, когда пишешь ф-ции внутри заголовочного файла (как часто бывает с шаблонными ф-циями, к примеру).

Другими словами, когда ты в main.cpp пишешь using namespace std; это не означает, что все имена из std во время компоновки будут переведены в глобальное пространство имён, это лишь помогает компилятору на этапе компиляции найти нужное имя и поставить полностью квалифицированную ссылку на это имя, т.е. никаких ошибок компоновки этот способ не добавит. Что же касается перекрытия имён - когда пишешь "большой код с разными библиотеками" крайне не рекомендуется делать модули длинее 200-400 строк ( примерно 10-20 функций в модуле ), а соответсвенно, случайно перекрыть имя среди этих 10-20 ф-ций будет крайне проблематично.

Другое дело, заголовочные файлы - там, конечно, using namespace для собственного удобства внутри namespace-scope писать категорически не рекомендуется.


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


Новичок



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

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



Цитата(archimed7592 @  9.4.2008,  09:46 Найти цитируемый пост)
Очень часто задают вопрос типа такого
Цитата
В книге приведён пример программы, но она у меня не компилируется, что мне делать?
Связано это с тем, что много книг с некоторых пор сильно устарели. Также устарели познания преподавателей, которые с тем же успехом учат вещам, которые не работают на современных компиляторах.

Что же такого в современных компиляторах? Да собственно ничего особенного, просто они начали более полно соответствовать Стандарту.

Итак, устаревшие источники в виде некоторых книг и преподавателей предлагают вам написать и откомпилировать следующую программу(так писать неправильно):
код C++

#include <iostream.h>
int main()
{
    cout << "Hello world!" << endl;
}


Visual Studio 2005 и выше(к примеру) откажется компилировать эту программу выдав следующее сообщение:
Без подсветки
1:
fatal error C1083: Cannot open include file: 'iostream.h': No such file or directory


Вот правильный вариант программы:
код C++

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


Отличия: во-первых, это подключение заголовочного файла iostream вместо iostream.h(этого требует Стандарт), во-вторых, это использование пространства имён std т.к. почти все сущности из стандартной библиотеки теперь располагаются в этом пространстве имён.

Более подробно:
1. Стандартные заголовочные более не имеют окончания .h. Т.е. теперь должно подключать fstream, ostream, vector, string и т.д.
1а. Стандартные заголовочные файлы из языка С(не С++) также более не имеют окончания .h, но имеют приставку 'c': cmath, cstdio, cstdlib и т.д. Примечание: помимо этого все ф-ции из этих заголовочных файлов языка С также теперь находятся в пространстве имён std, т.е. теперь нужно писать std::printf, std::strcpy и т.д.


    А о каком Стандарте речь? ISO/IEC 14882:1998? Если да, то тут написан бред. В нем не запрещено ипользовать хидеры с окончанием .h. Стандарты читать надо. И НИКОГДА в плюсах не будет запрещено их использование, т.к. Страуструп и прочие адепты из кожи вон лезут, добиваясь совместимости сишных прог с плюсовым стандартом (хоть у них это и не получается), чтобы как можно больше сишников мигрировали на плюсы. И нет никакого смысла убивать совместимость (пусть частичную). Это никому не надо.
    И не могли бы вы показать строчку стандарта, где написано, что код возврата из main без (return smth) есть 0? Я таковой не нашел. Более того, в сишном стандарте это undefined behavior. Боюсь, что в плюсах так же, хотя утверждать не берусь.
PM MAIL Jabber   Вверх
mes
Дата 12.9.2009, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(Fatkh @  12.9.2009,  20:26 Найти цитируемый пост)
  И не могли бы вы показать строчку стандарта, где написано, что код возврата из main без (return smth) есть 0?


Цитата(Standart; 3.6.1)

5 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;



Это сообщение отредактировал(а) mes - 12.9.2009, 21:34


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


depict1
****


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

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



Цитата(Fatkh @  12.9.2009,  21:26 Найти цитируемый пост)
И не могли бы вы показать строчку стандарта, где написано, что код возврата из main без (return smth) есть 0? Я

ISO/IEC 14882:2003 3.6.1.5


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


Архимед
****


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

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



Цитата(Fatkh @  12.9.2009,  21:26 Найти цитируемый пост)
  А о каком Стандарте речь? ISO/IEC 14882:1998?

Вообще говоря, я эту строчку читал в second edition, то бишь в 14882:2003, но не исключаю, что в 1998 написано то же самое.

Цитата(Fatkh @  12.9.2009,  21:26 Найти цитируемый пост)
Если да, то тут написан бред. В нем не запрещено ипользовать хидеры с окончанием .h

Уважаемый, так Вы же бред и пишите... Где в процитированном Вами куске моего поста написано, что стандарт запрещает использовать хидеры с окончанием .h?

Цитата(Fatkh @  12.9.2009,  21:26 Найти цитируемый пост)
Стандарты читать надо.

Действительно smile. Чем весьма и весьма рекомендую Вам заняться.

Цитата(Fatkh @  12.9.2009,  21:26 Найти цитируемый пост)
И НИКОГДА в плюсах не будет запрещено их использование

Здесь написана такая же очевидная истина, как вроде этой: "Буква А - первая буква в алфавите".


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


Новичок



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

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



Цитата(archimed7592 @  12.9.2009,  19:47 Найти цитируемый пост)
Уважаемый, так Вы же бред и пишите... Где в процитированном Вами куске моего поста написано, что стандарт запрещает использовать хидеры с окончанием .h?

Прошу прощения, невнимательно прочитал пост.

Цитата(mes @  12.9.2009,  19:32 Найти цитируемый пост)
5 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;

Спасибо.

Цитата(archimed7592 @  12.9.2009,  19:47 Найти цитируемый пост)
Действительно . Чем весьма и весьма рекомендую Вам заняться.

Каюсь - полностью прочитал лишь 2 сишных стандарта, стандарт плюсов только местами. 
PM MAIL Jabber   Вверх
serghd
Дата 3.1.2011, 04:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(archimed7592 @ 9.4.2008,  11:46)
1а. Стандартные заголовочные файлы из языка С(не С++) также более не имеют окончания .h, но имеют приставку 'c': cmath, cstdio, cstdlib и т.д.

Почему же, 
Код

#include <stdio.h> //а можно и #include <cstdio>
int main()
{
   getchar();
   return 0;
}

прекрасно компилится несмотря на ".h". Т.е. не указано, что можно писать именно обоими способами, а не только без ".h".

Это сообщение отредактировал(а) serghd - 3.1.2011, 04:57
PM MAIL   Вверх
mes
Дата 3.1.2011, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(serghd @  3.1.2011,  03:39 Найти цитируемый пост)
прекрасно компилится несмотря на ".h"

а почему не должно компилиться если у вас есть подходящий файл stdio.h ?
Цитата(serghd @  3.1.2011,  03:39 Найти цитируемый пост)
можно писать именно обоими способами, а не только без ".h".
 во первых это не одно и то же.. во вторых далеко не всегда возможно.. 




--------------------
PM MAIL WWW   Вверх
Modul
Дата 3.1.2011, 12:54 (ссылка)    | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Мне  кажется на языке С тоже надо привести консольную программу для
избежания ненужных вопросов:

Код

#include <stdio.h>

int main()
{
    printf("Hello world!\n");
    return 0;
}


Использованы:
1) пакет компиляторов MinGW;
2) среда Code::Blocks.


Это сообщение отредактировал(а) Modul - 9.1.2011, 19:27
--------------------
I'll be back !
PM MAIL   Вверх
serghd
Дата 3.1.2011, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(mes @ 3.1.2011,  11:26)
во первых это не одно и то же.. во вторых далеко не всегда возможно..

так вот этот момент и надо было описать как полагается, а не отрезать:

"Стандартные заголовочные файлы из языка С(не С++) также более не имеют окончания .h, но имеют приставку 'c': cmath, cstdio, cstdlib и т.д.". 

Я же поэтому и пример специально с ".h", а не с cstdio привёл!

Это сообщение отредактировал(а) serghd - 3.1.2011, 17:31
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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