Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/10: Рейтинг темы: голосов - 10, средняя оценка - 5.00
1182 / 467 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
1

какая то ошибка в книге

22.07.2009, 22:08. Просмотров 2084. Ответов 23
Метки нет (Все метки)

При компилировки кричит на

1.Error 1 error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup MSVCRTD.lib proba

2.Error 2 fatal error LNK1120: 1 unresolved externals D:\Projects\proba\Debug\proba.exe 1 proba


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "windows.h"
 
int f(int x){
int y;
 
y=x+4;
if(y>10) {
    return(x-1);}
 
y *= 2;
return (x+y);
 
getchar();
 
}
в чем проблема???????я все делаю по книге
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.07.2009, 22:08
Ответы с готовыми решениями:

Ошибка в книге?
Я тут наткнулся на непонятную ситуацию. Кто-нибудь скажет, почему там так написано(фото ниже)? (или...

Ошибка в листинге в книге
Читаю книгу Стивена Праты С++. Сперва было норм, но потом переводчик забухал. Нашел кучу ляпов, но...

Очередная ошибка в книге?
Я могу ошибаться, но мне кажется на странице 817 ошибка в книге. Пишется про защищенный раздел...

Ошибка в книге Шилдта?
Герберт Шилдт. C++ базовый курс. Третье издание. 2010 г. с. 269. Шилдт явно использует для доступа...

23
MCSD: APP BUILDER
8787 / 1065 / 104
Регистрация: 17.06.2006
Сообщений: 12,604
22.07.2009, 22:11 2
в конец программы добавь
int main() { return 0; }
1
1182 / 467 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
22.07.2009, 22:15  [ТС] 3
Rififi, спасибо!Яеще для того чтобы хорошо понять хочу еще и принтф запихнуть чтобы увидеть чем равен Y.
Надо вызвать F из main
0
MCSD: APP BUILDER
8787 / 1065 / 104
Регистрация: 17.06.2006
Сообщений: 12,604
22.07.2009, 22:21 4
примерно так:

#include <iostream>
int main()
{
int y;
std::cin >> y;
y = f(y);
std::cout << y << std::endl;
return 0;
}
1
1182 / 467 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
22.07.2009, 22:23  [ТС] 5
Цитата Сообщение от Rififi Посмотреть сообщение
std::cin >> y;
Цитата Сообщение от Rififi Посмотреть сообщение
std::cout << y << std::endl;
а почему так???почему ::
ps я еще этого не проходил
0
1182 / 467 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
22.07.2009, 22:27  [ТС] 6
Цитата Сообщение от Rififi Посмотреть сообщение
return 0;
а нельзя ли просто написать где объявляют функцию - void?чтобы retun не написать?

Добавлено через 48 секунд
Search.., читай первый пост
я с учебником так...там как написано я так и написал...я только учу

Добавлено через 1 минуту 18 секунд
Rififi, вот что пишет, короче открывается окно и там
Run-Time Check Failure #3 - The variable 'y' is being used without being initialized.
на это орет y=f(y);
0
Почетный модератор
7321 / 2587 / 268
Регистрация: 29.07.2006
Сообщений: 13,582
22.07.2009, 22:30 7
@lex, он тебе же английским по белому написал, что переменная у не инициализирована перед использованием. Так проинициализируй ее.
0
1182 / 467 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
22.07.2009, 22:33  [ТС] 8
Vourhey, только что я это сделал...я это знал но не знал если там есть y=f(y); то зачем еще и к нулю присвоить
0
MCSD: APP BUILDER
8787 / 1065 / 104
Регистрация: 17.06.2006
Сообщений: 12,604
22.07.2009, 22:47 9
@lex,
а почему так???почему ::
ps я еще этого не проходил


потому что всё, что содержит в себе стандартная библиотека с++, находится в пространстве имён std, поэтому полная запись должна выглядеть так:
<имя_пространства> :: <идентификатор>

Ламерский путь состоит в том, чтобы в начала файла запихнуть строку using namespace std, тогда можно не писать std::, но ты хочешь быть ламером? (((:

а нельзя ли просто написать где объявляют функцию - void?чтобы retun не написать?
по стандарту - нельзя. нубиками - можно (:

вот что пишет, короче открывается окно и там
Run-Time Check Failure #3 - The variable 'y' is being used without being initialized.

это странно, потому что в этой строке
std::cin >> y;
как раз и происходит инициализация переменной.
1
1182 / 467 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
22.07.2009, 22:55  [ТС] 10
Rififi,аааа, я понял.....это :: для того что бы видет переменные в других функциях, да?

Добавлено через 4 минуты 27 секунд
Цитата Сообщение от Rififi Посмотреть сообщение
int y; std::cin >> y; y = f(y); std::cout << y << std::endl;
у меня пустота...ничего нету в консоли
а так как сделал я выводлился 8
0
MCSD: APP BUILDER
8787 / 1065 / 104
Регистрация: 17.06.2006
Сообщений: 12,604
22.07.2009, 22:58 11
нет, это для того, чтобы видеть переменные (функции, типы из этого пространства имён)
например:

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
namespace my_std
{
   int i;
   void f();
}
 
// так нельзя
// i = 0;
// f();
 
// так - можно
my_std::i = 0;
my_std::f();
 
// так - тоже можно
using my_std::i;
using my_std::f;
i = 0;
f();
 
// а так - можно ламерам :)
using namespace my_std;
i = 0;
f();
Добавлено через 2 минуты 22 секунды
у меня пустота...ничего нету в консоли
а так как сделал я выводлился 8

я не смотрел что конкретно делает твоя функция, может так какой-то косяк.
проверить правильность работы ввода-вывода можно так
int f(int x) { return x * 10; }
если получил увеличенное в 10 раз число - косяк у тебя, не получил - косяк в компиляторе (:
0
1182 / 467 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
22.07.2009, 23:03  [ТС] 12
Rififi, я так и думал
но я не понимаю почему так только ламеры делают?...кстати using namespace my_std;
я в книжке и в хелп файле нашел......не думаю что автор книги ламер

Добавлено через 3 минуты 25 секунд
Цитата Сообщение от Rififi Посмотреть сообщение
my_std::f();
а у меня так не получается: пишет std is not class or member
0
Эксперт С++
2919 / 1268 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
22.07.2009, 23:04 13
Что за книга-то? "Гюльчатай, открой личико-то!" А то, может, книга уже успела устареть....?
0
1182 / 467 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
22.07.2009, 23:06  [ТС] 14
CheshireCat, может, не новая 2 года....ну или же год
0
Почетный модератор
7321 / 2587 / 268
Регистрация: 29.07.2006
Сообщений: 13,582
22.07.2009, 23:14 15
На вопрос темы был дан ответ. Нет главной функции. Вы тут уже нэймспэйсы обсуждаете. По теме еще есть вопросы? Нет - закрываю.
0
Эксперт С++
7171 / 3229 / 77
Регистрация: 17.06.2009
Сообщений: 14,166
22.07.2009, 23:26 16
а нельзя ли просто написать где объявляют функцию - void?чтобы retun не написать?
Есть два варианта:
C
1
int main( void )
или
C
1
int main( int argc, char *argv[] )
1
3073 / 2394 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
23.07.2009, 10:24 17
odip, в обоих вариантах придется писать return в конце функции.
0
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
23.07.2009, 10:41 18
Цитата Сообщение от kazak Посмотреть сообщение
в обоих вариантах придется писать return в конце функции.
не придётся. компилятор сам добавит return, если явно не указан.
Цитата Сообщение от Rififi Посмотреть сообщение
это странно, потому что в этой строке
std::cin >> y;
как раз и происходит инициализация переменной.
если ввести не целочисленное значение, а символ, например f, то переменная y не будет инициализирована, т.к. cin установит флаг в failbit
Так что в принципе это очень даже полезное предупреждение компилятора.
0
3073 / 2394 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
23.07.2009, 12:25 19
Цитата Сообщение от zim22 Посмотреть сообщение
не придётся. компилятор сам добавит return, если явно не указан.

Цитата:
компиляторы разные бывают.
1
Эксперт С++
2919 / 1268 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
23.07.2009, 12:41 20
А что, пункт 3.6.1/5 Стандарта языка уже отменили? Не знал-с....
Ну, а если ты используешь бородато-древний компилятор "времен Очаковских и покоренья Крыма", то...... я думаю, ССЗБ.

Кстати, @lex, что за книга-то? Любопытно было бы все-таки узнать название.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.07.2009, 12:41

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

Сдвиг байтов, ошибка в книге?
Прохожу тему по перемещению байтов. В книге написан код: j = 1 &lt;&lt; j в первый цикл он...

указатели,вроде ошибка в книге
снова ошибка в книге снова разочаровние...=\ вот код #include &lt;windows.h&gt; #include&lt;iostream&gt;...

Ошибка в книге или я что то не понимаю ?
Задача по наследованию: Написать класс &quot;Служащие&quot; которые получают только процент от продаж и...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.