1 / 1 / 0
Регистрация: 17.11.2011
Сообщений: 20

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

17.11.2011, 02:22. Показов 62089. Ответов 83
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Я начал изучать чудесный язык программирования С++ по книге Принципы и практика использования 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.


Заранее благодарю всех откликнувшихся!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.11.2011, 02:22
Ответы с готовыми решениями:

Тайна Страуструпа - std_lib_facilities.h (2)
Ребят уже голову сломал как дописать в код. Предложите пользователю ввести значение m если ваш друг -мужчина, f -если женщина. ...

Std_lib_facilities.h Страуструпа, ругается на синтаксис
Всем салют! Нужна помощь, проблема в следующем. Открыл Страуструпа, скачал std_lib_facilities.h с его сайта, набрал код: #include...

Не работает код с Функцией error и библиотекой std_lib_facilities из книги Страуструпа
Я новичок в программировании. Учу по книге Страуструпа, там вначале нужно было подключить нестандартуную библиотеку...

83
26.11.2011, 19:54
Студворк — интернет-сервис помощи студентам

Не по теме:

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

0
Заблокирован
26.11.2011, 20:22
Цитата Сообщение от 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 не будут вызваны какие-то деструкторы (ну, не знает челвоек стандарта! Что с ним делать?!), и забанил меня! Я это узнал, когда набирал цитату из стандарта, но так и не смог ее ввести, так как тот модератор поспешил меня забанить.

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

Не по теме:

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

0
1 / 1 / 0
Регистрация: 17.11.2011
Сообщений: 20
26.11.2011, 21:08  [ТС]
я очень рад ,что мой вопрос вызвал такую пламенную дискуссию,ведь лишь в споре рождается истина .
по поводу ввода ,там действительно у меняя была опечатка ,мы вводим слова в "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 неразрешенных внешних элементов
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
26.11.2011, 21:13
У тебя не правильно настроен проект. Лучше создавай НЕ пустой проект, пока не научишься самостоятельно его правильно настраивать.)

Ты исправил не все указанные мной ошибки. В строке 14 ошибка осталась.
0
Заблокирован
26.11.2011, 21:14
Serg_Smith,

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

Ты исправил не все указанные мной ошибки. В строке 14 ошибка осталась.
вы правы ,я не заметил эту ошибку (
исправил ,но ошибка до сих пор осталась.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
26.11.2011, 21:19
Цитата Сообщение от 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>.
0
1 / 1 / 0
Регистрация: 17.11.2011
Сообщений: 20
26.11.2011, 21:25  [ТС]
Цитата Сообщение от Сыроежка Посмотреть сообщение
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
кусочек с книги.
0
Заблокирован
26.11.2011, 21:26
Цитата Сообщение от Serg_Smith Посмотреть сообщение
MS Visual Studio 2010 Professional, дело в том ,что до этого я же прописывал программы с книги ,когда все таки разобрался с std_lib_facilities.h и все работало.

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


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

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

Добавлено через 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;
    }
}
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
28.11.2011, 10:51
Serg_Smith, и снова вы не выложили текст ошибок
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
28.11.2011, 11:00
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 во всех этих случаях лишнее.
1
1 / 1 / 0
Регистрация: 17.11.2011
Сообщений: 20
28.11.2011, 11:59  [ТС]
Цитата Сообщение от 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 минут
Это было написано не в книге ,это задание в конце параграфа ,которое нужно было выполнить.
0
 Аватар для vanek516
5 / 5 / 0
Регистрация: 24.06.2009
Сообщений: 125
28.01.2012, 17:48
Помогите добавить std_lib_facilities.h. Скачал с сайта, по инструкции сделал, положил файлик в header, в папку визуалки,
C++
1
#include "std_lib_facilities.h"
не видит сам файл(( в чем может быть дело?
Миниатюры
Тайна Страуструпа  -   std_lib_facilities.h !  
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
28.01.2012, 17:58
А где этот файл находится?
0
 Аватар для vanek516
5 / 5 / 0
Регистрация: 24.06.2009
Сообщений: 125
28.01.2012, 19:22
Цитата Сообщение от Chelioss Посмотреть сообщение
А где этот файл находится?
В папке header проекта, в папке мои документы\visual studio (пробовал указывать путь), все сделано по инструкции, которая была на сайте, в файле лежит код с сайта, все проверено уже много раз.. Просто удивительно, сделал все верно и все равно не видит..(

Добавлено через 1 час 21 минуту
Разобрался.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.01.2012, 19:22

Std_lib_facilities не подключается
#include &quot;iostream&quot; #include &quot;std_lib_facilities&quot; int main() // Програми начинаются с виполнение мейн!!!! { cout &lt;&lt;...

Std_lib_facilities.h в dev C++ 5.4.2
Господа программисты, помогите новичку. есть проблема которую не решить самому. В Dev C++ 5.4.2 ввожу #include...

Подключение заголовочного файла std_lib_facilities.h
Здравствуйте. Учу C++ по книге Stroustrup'а. Автор настоятельно просит использовать библиотеку std_lib_facilities.h Создал...

Тайна ссылки r-value
Попробовал развернуть пример из раздела 8.1 книги Скотт Мейерс &quot;Эффективный и современный С++&quot;, заменив класс string классом MyData с...

Задание из Страуструпа
Добрый день,дорогие форумчане.В общем читаю книжечку Страуструпа.Выполняю задания.Вот что-то у меня ступор.Прошу Вашего совета:) ...


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

Или воспользуйтесь поиском по форуму:
80
Закрытая тема Создать тему
Опции темы

Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Video: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru