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

Поиск:

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


Архимед
****


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

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



Очень часто задают вопрос типа такого
Цитата
В книге приведён пример программы, но она у меня не компилируется, что мне делать?
Связано это с тем, что много книг с некоторых пор сильно устарели. Также устарели познания преподавателей, которые с тем же успехом учат вещам, которые не работают на современных компиляторах.

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

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

#include <iostream.h>

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


Visual Studio 2005 и выше(к примеру) откажется компилировать эту программу выдав следующее сообщение:
Код

fatal error C1083: Cannot open include file: 'iostream.h': No such file or directory


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

#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 и т.д.
2. Пространство имён std. Все сущности из стандартной библиотеки теперь находятся в нём. Сделано это для того, чтобы они не конфликтовали с вашими сущностями(из-за совпадения имён). Если Вы не хотите постоянно приписывать std::, то есть два варианта как этого избежать:
Код

// первый вариант: подключение только необходимых имён
#include <iostream>

using std::cout;
using std::endl;

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

// второй вариант: подключение всех имён
#include <iostream>

using namespace std;

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


К слову, подключение посредством using или using namespace категорически не рекомендуется делать внутри своих заголовочных файлов.
Также не рекомендуется делать это и внутри модулей(.cpp). Самый правильный вариант - это подключение имён уровня ф-ции, причём, рекомендуется подключать только необходимые имена:
Код

#include <iostream>

int main()
{
    using std::cout;
    using std::endl;
    cout << "Hello world!" << endl;
}


Назад к FAQ

Это сообщение отредактировал(а) bsa - 26.7.2011, 10:59


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


Бывалый
*


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

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



Кажись у тебя ошибка. Всюду написано:
Код

cout << "Hello world!" << std;

тут походу имеется ввиду
Код

cout << "Hello world!" << endl;
???

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


Архимед
****


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

Репутация: 6
Всего: 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   Вверх
JackYF
Дата 9.4.2008, 18:20 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Всё хорошо, только предлагаю заменить "инжект" на "включение" или "вставка".


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


Архимед
****


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

Репутация: 6
Всего: 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   Вверх
MAKCim
Дата 9.4.2008, 18:32 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(archimed7592 @  9.4.2008,  18:28 Найти цитируемый пост)
Может кто догадается, как правильно это по русски обозвать, чтобы дико не звучало?

получать доступ к сущностям пространства имен  smile 


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

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


Архимед
****


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

Репутация: 6
Всего: 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   Вверх
opjox
Дата 9.4.2008, 18:52 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Может быть "подключение"?
PM MAIL ICQ   Вверх
jenek28
Дата 9.4.2008, 21:11 (ссылка)    | (голосов:7) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



в конце допиши return 0;
и всё будет работать
PM MAIL   Вверх
archimed7592
Дата 9.4.2008, 21:15 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



Цитата(jenek28 @  9.4.2008,  21:11 Найти цитируемый пост)
в конце допиши return 0;
и всё будет работать 

Спасибо, дорогой, а то у меня до этого не работало smile.

Если уж на то пошло, то писать нужно return EXIT_SUCCESS, но это эквивалентно return 0, а по стандарту, если ф-ция main не возвращает значения, то неявно подставляется возвращение нуля(implicit return 0), так что, если компилятор требует написания return 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   Вверх
arkeyn
Дата 26.4.2008, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



у меня c++ builder 6 
никак немогу написать консольное приложение под дос, перепробывал выше приведенное, компилирует и материться что нету ДЛЛки
ХЕЛП!!! или скажите плз где норм компилятор скачать, smile или как руки кривые выпрямить smile))))))

Добавлено через 4 минуты и 27 секунд
cc3260.dll вот этот найти не может
PM MAIL   Вверх
archimed7592
Дата 26.4.2008, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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





--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
arkeyn
Дата 26.4.2008, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(archimed7592 @ 26.4.2008,  11:17)
arkeyn, см. здесь: http://forum.vingrad.ru/index.php?show_typ...showtopic=49632

ладно, много слишком всего. У меня есть книга там описываеться С++ но только вот мне нужен стабильный компилятор, 
!!рабочий!! вижу что там всего много, какой именно посоветуеш закачать что бы там безпроблем можна было приложения 
под дос писать по книжке и желательно что бы потом чтото под виндовс писать тоже можно было. спб
PM MAIL   Вверх
Akeem
Дата 26.4.2008, 11:53 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Странно, что только сейчас об этом заговорили. 
Уже как 4 года говорят о том что все функции ввода/вывода находятся в std и что следует писать программу так
Код


#include <iostream>
using namespace std;

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





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

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


Новичок



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

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



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


#include <iostream>
using namespace std;

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

всеравно неработает, какой вы компилятор юзаете? smile 

посоветуйте компил нормальный что бы с формами можна было и под дос работал ато в моет c++ builder 6 
нехватает библиотек какихто все время, уже достало впрям   smile  smile  smile 
PM MAIL   Вверх
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   Вверх
mes
Дата 3.1.2011, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(serghd @  3.1.2011,  16:29 Найти цитируемый пост)
так вот этот момент и надо было описать как полагается, а не отрезать:

так читайте внимательно что написано.. ударение на слове (стандартные).. 


Цитата(serghd @  3.1.2011,  16:29 Найти цитируемый пост)
Я же поэтому и пример специально с ".h"

ну и что, что привели.. это разве делает заголовок стандартным ?!

Это сообщение отредактировал(а) mes - 3.1.2011, 20:30


--------------------
PM MAIL WWW   Вверх
bsa
Дата 8.1.2011, 23:47 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Modul @  3.1.2011,  13:54 Найти цитируемый пост)
Добавлено через 7 минут и 30 секунд
или еще 2-й вариант:
Идем читать современную книгу по языку C!!! И советую о void main() забыть навсегда!

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


pattern`щик
****


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

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



Цитата(Modul @  3.1.2011,  12:54 Найти цитируемый пост)
1) пакет компиляторов MinGW;


Цитата(Modul @  3.1.2011,  12:54 Найти цитируемый пост)
void main()

что-то из этого враки smile 
PM WWW   Вверх
Modul
Дата 9.1.2011, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(bsa @  8.1.2011,  23:47 Найти цитируемый пост)
И советую о void main() забыть навсегда!


Да, увлекся по аналогии с обычной функцией, ничего не возвращающей.

Оставим один вариант.

--------------------
I'll be back !
PM MAIL   Вверх
skyfly666
Дата 12.1.2011, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ох сколько обсуждений из за такой маленькой программы smile 
я бы писал вот так

Цитата

Код
#include <stdio.h>
#include <stdlib.h>

int main(void) {
    puts("Hello World!!!");
    return EXIT_SUCCESS;
}





мне так проще, просто подключить пару библиотек. В общем кому как smile 
Хотя смотря у кого какой компилятор.
PM MAIL WWW ICQ Skype   Вверх
bsa
Дата 12.1.2011, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



skyfly666, бегом читать книжку по С. Чтобы не говорить глупостей про библиотеки
PM   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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