Форум программистов, компьютерный форум CyberForum.ru

Тайна Страуструпа - std_lib_facilities.h ! - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 144, средняя оценка - 4.64
Serg_Smith
1 / 1 / 0
Регистрация: 17.11.2011
Сообщений: 20
17.11.2011, 02:22     Тайна Страуструпа - std_lib_facilities.h ! #1
Доброго времени суток.
Я начал изучать чудесный язык программирования С++ по книге Принципы и практика использования C++ Страуструпа.
Начитался ,что автор весьма серьезный и из этой книги можно подчеркнуть много полезного.
Но сразу столкнулся с проблемой,Код автора оказался у меня неработоспособен =( :

C++
1
2
3
4
5
6
7
8
#include "../../std_lib_facilities.h"       /*там было еще вот так "std_lib_facilities.h" ,что так же не дало никакого результата,в какие папки бы я не кидал этот фаил, взятый с его сайта.*/
 
int main()
{
   cout << "Hello, World!\n";
   keep_open_window();
   return 0;
}
я читал приложение ,в конце книги ,в котором даны инструкции по работе с этим магическим заголовком. Ничего не помогло ,весь итог :
helloworld.cpp(3): warning C4627: #include "../../std_lib_facilities.h": пропущен при поиске использования предкомпилированного заголовка
Добавление директивы в "StdAfx.h" или перестройка предкомпилированного заголовка
helloworld.cpp(11): fatal error C1010: непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву "#include "StdAfx.h"" в источник.
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========


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

Так как я ,не знаком ранее с программированием ,я решил поискать книгу ,в которой идет объяснение по написанию сразу в Visual Studio 2010. По отзывам этот автор весьма авторитетен и его книги весьма поучительные,но столкнувшись с этим делом ,продолжил свои поиски и нашел книгу Бориса Пахомого C/C++ и Visual Studio 2010 ,но найдя ошибку в коде третей его программки (кстати в скриншотах ясно видно ,что программа работает некоректно,но автора это не остановило ),я усомнился ,стоит ли продолжать обучение по этой книге ,потому как объяснение тоже какое то стремное (


Ребята ,помогите мне с этим std_lib_facilities.h у Страуструп или посоветуйте стоящую книгу для старта С++ в Visual Studio 2010.


Заранее благодарю всех откликнувшихся!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2011, 02:22     Тайна Страуструпа - std_lib_facilities.h !
Посмотрите здесь:

Тайна Страуструпа - std_lib_facilities.h (2) C++
задачки Страуструпа C++
Угадайка от Страуструпа C++
C++ Подключение заголовочного файла std_lib_facilities.h
C++ Калькулятор в книге Страуструпа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
26.11.2011, 19:54     Тайна Страуструпа - std_lib_facilities.h !
  #61

Не по теме:

Цитата Сообщение от Сыроежка Посмотреть сообщение
то я неоднократно ловил этого silent_1991 на безграмотности
Будь здесь Страуструп, вы и его бы на безграмотности поймали. Это тоже чтобы остальным было понятно.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
26.11.2011, 20:22     Тайна Страуструпа - std_lib_facilities.h ! #62
Цитата Сообщение от Deviaphan Посмотреть сообщение
Я этого и не отрицаю, это раз. У меня есть более интересные занятия, чем штудирование стандарта - это два. Ваши разборки с модераторами мне глубоко безразличны (меня почему-то они трут без личной ненависти, что я делаю не так?) - это три. Когда я не прав, то ошибки признаю - это четыре.
Ну и раз уж меня процитировали, то может подскажешь: если я изменю точку входа с main на свою функцию, то обязан ли я использовать Return? Это как-бы пять.)
Я не обвинял вас в том, что вы что-то не знаете. Я лишь константировал на основании вами заданного вопроса, что ваши знания обрывочны, и для этого и существует форум, чтобы другие смогли подсказать. У меня нет разборок с эти silent_1991 , потому что когда имеешь дело с непорядочными людьми, то и так все ясно. Он нахамил, что не мне судить про хороший тон программирвоания, а после этого еще полез за "пистолетом", то есть начал использовать свое служебное положение с целью сведения личных счетов.
Та кчто действительно оставим этого silent_1991 с его злобой.

Отвечаю на ваш вопрос. Эту возможность опускать предложение return, стандарт оговаривает только для функции main. раньше до принятия стандарта можно было, например, ничего не возвращать из функции, которая на самом деле имела тип возвращаемого значения. Стандарт запретил делать такие вещи, но оставил послабление для функции main. Если вы опустите предложение return для функции main, то компилятор вставляет код, аналогичный return 0;, естественно для всех других функций будет выдано по крайней мере предупреждение.
Есть ситуации, когда компилятор вообще не способен определить, что в функции отсутствует предложение return. Тогда поведение такой функции неопределенное.

Я видел совсем недавно пример, где был примерно такой код

C++
1
2
3
4
5
6
7
8
9
10
11
12
int f( int x )
{
   if ( x == 0 )
   {
      /* некоторый код */
      /* предложение return отсутствует */
   }
   else if ( x != 0 )
   {
      return 1;
    }
}
Я могу ошибаться, но код был очень похож на данный пример.

И новичок спрашивал, почему при вызове функции у него моментально завершалась выполнении программы, то есть происходил выход из main. Проблема была в том, что он передавал функции x == 0, и из-за отсутсатвия return поведение программы было неопрделенным. Неизвестно, куда передаст управление код программы.

Я в связи с этим вспоминаю анекдотичный случай на другом форуме. Там был такой же модератор, как этот silent_1991

Был раздел, посвященный обучению языку С++. И в этом разделе утверждалось, что самая маленькая программа на С++ по количеству строк , это следующая

C++
1
2
3
4
int main()
{
   return 0;
}
При этом дополнительно сообщалась, что это самая маленькая программа как на С++, так и на С.

Я возразил, что это, во-первых, это не является самой маленькой программой на С++. Самой маленьклой программой по количеству строк на С++ является программа

C++
1
2
3
int main()
{
}
Во-вторых, что для языка С это вообще некорректная программа, так как в С функция main должна объявляться как

int main( void )
{
}


После чего местный модератор, таклой же хам , как этот silent_1991 , в точности повторил фразу silent_1991 , что не мне судить, что я слишком о себе высокго мнения. Привел кучу глупейших возражений типа ттоого, что без return не будут вызваны какие-то деструкторы (ну, не знает челвоек стандарта! Что с ним делать?!), и забанил меня! Я это узнал, когда набирал цитату из стандарта, но так и не смог ее ввести, так как тот модератор поспешил меня забанить.

Это типичнакя ситуация для российских форумов, когда модератором ставят такого ограниченного, непорядочного человека! Они предпочитают аргументы заменять своим особым положением модератора, удаляя всех тех, кто им что-то возражает. То есть они наивно считают, что положение модератора дает им право хамить!
Deviaphan
26.11.2011, 20:26
  #63

Не по теме:

Плюсик за середину поста.)

Serg_Smith
1 / 1 / 0
Регистрация: 17.11.2011
Сообщений: 20
26.11.2011, 21:08  [ТС]     Тайна Страуструпа - std_lib_facilities.h ! #64
я очень рад ,что мой вопрос вызвал такую пламенную дискуссию,ведь лишь в споре рождается истина .
по поводу ввода ,там действительно у меняя была опечатка ,мы вводим слова в "temp" ,я исправил все ошибки.
я приведу пример ,который я ввожу сейчас:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <std_lib_facilities.h>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
vector<string> words;
string temp;
while(cin>>temp)
     words.push_back(temp);
cout<<"Number of words: "<<words.size()<<endl;
sort(words.begin(),words.end());
for(int i=0; 1< words.size(); ++i)
    if(i==0 || words[i-1] !=words[i])
        cout<<words[i]<<"\n";
}
Итог:

------ Построение начато: проект: vectors, Конфигурация: Debug Win32 ------
Построение начато 26.11.2011 19:04:27.
InitializeBuildStatus:
Обращение к "Debug\vectors.unsuccessfulbuild".
ManifestResourceCompile:
Для всех выходных данных обновления не требуется.
LINK : error LNK2001: неразрешенный внешний символ "_mainCRTStartup"
C:\Users\Сергей\Documents\Visual Studio 2010\Projects\vectors\Debug\vectors.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
26.11.2011, 21:13     Тайна Страуструпа - std_lib_facilities.h ! #65
У тебя не правильно настроен проект. Лучше создавай НЕ пустой проект, пока не научишься самостоятельно его правильно настраивать.)

Ты исправил не все указанные мной ошибки. В строке 14 ошибка осталась.
Сыроежка
Заблокирован
26.11.2011, 21:14     Тайна Страуструпа - std_lib_facilities.h ! #66
Serg_Smith,

Вы наверное пользуетесь компилятором Microsoft VС++, который требует для проектов вставлять в самое начало заголовок #include "stdafx.h"
Serg_Smith
1 / 1 / 0
Регистрация: 17.11.2011
Сообщений: 20
26.11.2011, 21:17  [ТС]     Тайна Страуструпа - std_lib_facilities.h ! #67
Цитата Сообщение от Deviaphan Посмотреть сообщение
У тебя не правильно настроен проект. Лучше создавай НЕ пустой проект, пока не научишься самостоятельно его правильно настраивать.)

Ты исправил не все указанные мной ошибки. В строке 14 ошибка осталась.
вы правы ,я не заметил эту ошибку (
исправил ,но ошибка до сих пор осталась.
BRcr
 Аватар для BRcr
4003 / 2292 / 155
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
26.11.2011, 21:19     Тайна Страуструпа - std_lib_facilities.h ! #68
Цитата Сообщение от Serg_Smith Посмотреть сообщение
InitializeBuildStatus:
Обращение к "Debug\vectors.unsuccessfulbuild".
ManifestResourceCompile:
Для всех выходных данных обновления не требуется.
LINK : error LNK2001: неразрешенный внешний символ "_mainCRTStartup"
C:\Users\Сергей\Documents\Visual Studio 2010\Projects\vectors\Debug\vectors.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
Две мысли:
-- очистить папку debug; не знаю как в VS, но в С++Builder опция Project->Clear Project иногда помогает избавиться от Link Error;
-- удалить нафиг ненужный header <std_lib_facilities.h>.
Serg_Smith
1 / 1 / 0
Регистрация: 17.11.2011
Сообщений: 20
26.11.2011, 21:25  [ТС]     Тайна Страуструпа - std_lib_facilities.h ! #69
Цитата Сообщение от Сыроежка Посмотреть сообщение
Serg_Smith,

Вы наверное пользуетесь компилятором Microsoft МС++, который требует для проектов вставлять в самое начало заголовок #include "stdafx.h"
MS Visual Studio 2010 Professional, дело в том ,что до этого я же прописывал программы с книги ,когда все таки разобрался с std_lib_facilities.h и все работало.

Добавлено через 1 минуту
Цитата Сообщение от BRcr Посмотреть сообщение
Две мысли:
-- очистить папку debug; не знаю как в VS, но в С++Builder опция Project->Clear Project иногда помогает избавиться от Link Error;
-- удалить нафиг ненужный header <std_lib_facilities.h>.
второй не помог.

Добавлено через 4 минуты
Вложение 109460
кусочек с книги.
Сыроежка
Заблокирован
26.11.2011, 21:26     Тайна Страуструпа - std_lib_facilities.h ! #70
Цитата Сообщение от Serg_Smith Посмотреть сообщение
MS Visual Studio 2010 Professional, дело в том ,что до этого я же прописывал программы с книги ,когда все таки разобрался с std_lib_facilities.h и все работало.

Добавлено через 1 минуту


второй не помог.
Тут два варианта. Если вы запускаете модуль только на компиляцию с помощью Ctrl+F7, то этат ошибка может выскакивать. Ежели она выскакивает на нажатие клавиши Ctrl+F5, то значит вам лучше создать новый проект, а туда аккуратно скопировать ваш код, который предварительно можно сохранить в каком-нибудь текстовом файле рограммы Блокнот. И на забыть про заголовочный файл, который, как я указал, должен быть первым в проекте.
И не слушайте советы от BRcr. Он несет глупость, так как это центральный заголовочный файл по материалу книги.
BRcr
 Аватар для BRcr
4003 / 2292 / 155
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
26.11.2011, 21:31     Тайна Страуструпа - std_lib_facilities.h ! #71
Цитата Сообщение от Сыроежка Посмотреть сообщение
И не слушайте советы от BRcr. Он несет глупость, так как это центральный заголовочный файл по материалу книги...
... , без которого в данном случае можно и обойтись.
Serg_Smith
1 / 1 / 0
Регистрация: 17.11.2011
Сообщений: 20
26.11.2011, 21:38  [ТС]     Тайна Страуструпа - std_lib_facilities.h ! #72
таинственным образом оно заработало о_О
если я копирую код и вставляю в новый проект ,он не работает.
если я копирую в блокнот и от-туда копирую в новый проект,программа работает.
весьма занятно)))

Огромнейшее спасибо вам и всем,кто пытался помочь с этой проблемой!
Но на будущее ,все же -из-за чего это проблема возникает?
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
27.11.2011, 07:55     Тайна Страуструпа - std_lib_facilities.h ! #73
У тебя не находится точка входа, это проблема именно с настройкой проекта. Не правильно выбран CRT. Например, релизный вместо отладочного или с не правильной компоновкой. Сгенерируй НЕ пустой проект и по изучай его настройки. Твоя проблема исправляется буквально одним-двума комбобоксами, но по памяти я не скажу где они.)
Serg_Smith
1 / 1 / 0
Регистрация: 17.11.2011
Сообщений: 20
28.11.2011, 03:39  [ТС]     Тайна Страуструпа - std_lib_facilities.h ! #74
спасибо большое за совет )будем стараться)

Добавлено через 14 часов 52 минуты
И сново проблема(
одно из заданий -написать программку ,которая по вводу цифр ,должна писать эту цифру словом,но ошибки при компиляции...что не так -не могу понять(((
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <std_lib_facilities.h>
 
 
 
int main()
{
    vector<string> digitals(10);
    string digitals [0]="zero";
    string digitals [1]="one";
    string digitals [2]="two";
    string digitals [3]="three";
    string digitals [4]="four";
    string digitals [5]="five";
    string digitals [6]="six";
    string digitals [7]="seven";
    string digitals [8]="eight";
    string digitals [9]="nine";
    char dig=' ';
    cout<<"Enter digital:\n";
    cin>>dig;
    switch(dig){
        case '0':
            cout<<digitals [0]<<"\n";
                break;
                case '1':
            cout<<digitals [1]<<"\n";
            break;
                case '2':
            cout<<digitals [2]<<"\n";
                break;
                case '3':
            cout<<digitals [3]<<"\n";
                break;
                case '4':
            cout<<digitals [4]<<"\n";
                break;
                case '5':
            cout<<digitals [5]<<"\n";
                break;
                case '6':
            cout<<digitals [6]<<"\n";
                break;
                case '7':
            cout<<digitals [7]<<"\n";
                break;
                    case '8':
            cout<<digitals [8]<<"\n";   
                break;
                    case '9':
            cout<<digitals [9]<<"\n";
                break;
                    default :
                        cout<<"Sorry, but I don't know what is it T_T \n";
                            break;
    }
}
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.11.2011, 10:51     Тайна Страуструпа - std_lib_facilities.h ! #75
Serg_Smith, и снова вы не выложили текст ошибок
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
28.11.2011, 11:00     Тайна Страуструпа - std_lib_facilities.h ! #76
C++
1
2
3
4
5
6
7
8
9
10
11
        vector<string> digitals(10);
        string digitals [0]="zero";
        string digitals [1]="one";
        string digitals [2]="two";
        string digitals [3]="three";
        string digitals [4]="four";
        string digitals [5]="five";
        string digitals [6]="six";
        string digitals [7]="seven";
        string digitals [8]="eight";
        string digitals [9]="nine";
Такого в книжке не может быть. Полагаю string во всех этих случаях лишнее.
Serg_Smith
1 / 1 / 0
Регистрация: 17.11.2011
Сообщений: 20
28.11.2011, 11:59  [ТС]     Тайна Страуструпа - std_lib_facilities.h ! #77
Цитата Сообщение от Jupiter Посмотреть сообщение
Serg_Smith, и снова вы не выложили текст ошибок
я не выложил потому,что там огромнейшая была ошибка .

Добавлено через 4 минуты
Цитата Сообщение от ForEveR Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
        vector<string> digitals(10);
        string digitals [0]="zero";
        string digitals [1]="one";
        string digitals [2]="two";
        string digitals [3]="three";
        string digitals [4]="four";
        string digitals [5]="five";
        string digitals [6]="six";
        string digitals [7]="seven";
        string digitals [8]="eight";
        string digitals [9]="nine";
Такого в книжке не может быть. Полагаю string во всех этих случаях лишнее.
да,вы правы! именно в этом и была моя ошибка!
Спасибо вам огромнейшее за помощь!

Добавлено через 6 минут
Это было написано не в книге ,это задание в конце параграфа ,которое нужно было выполнить.
vanek516
 Аватар для vanek516
5 / 5 / 0
Регистрация: 24.06.2009
Сообщений: 125
28.01.2012, 17:48     Тайна Страуструпа - std_lib_facilities.h ! #78
Помогите добавить std_lib_facilities.h. Скачал с сайта, по инструкции сделал, положил файлик в header, в папку визуалки,
C++
1
#include "std_lib_facilities.h"
не видит сам файл(( в чем может быть дело?
Миниатюры
Тайна Страуструпа  -   std_lib_facilities.h !  
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
28.01.2012, 17:58     Тайна Страуструпа - std_lib_facilities.h ! #79
А где этот файл находится?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2012, 19:22     Тайна Страуструпа - std_lib_facilities.h !
Еще ссылки по теме:

C++ Задание из книги Страуструпа
Калькулятор страуструпа C++
C++ Задание из Страуструпа

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
vanek516
 Аватар для vanek516
5 / 5 / 0
Регистрация: 24.06.2009
Сообщений: 125
28.01.2012, 19:22     Тайна Страуструпа - std_lib_facilities.h ! #80
Цитата Сообщение от Chelioss Посмотреть сообщение
А где этот файл находится?
В папке header проекта, в папке мои документы\visual studio (пробовал указывать путь), все сделано по инструкции, которая была на сайте, в файле лежит код с сайта, все проверено уже много раз.. Просто удивительно, сделал все верно и все равно не видит..(

Добавлено через 1 час 21 минуту
Разобрался.
Yandex
Объявления
28.01.2012, 19:22     Тайна Страуструпа - std_lib_facilities.h !
Закрытая тема Создать тему
Опции темы

Текущее время: 20:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru