Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: простая программа на с++ не компилируется  (Прочитано 3875 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Abbattar

  • Автор темы
  • Новичок
  • *
  • Сообщений: 45
  • Russische_Abbattar
    • Просмотр профиля
    • ЖЖ
помогите разобраться, что не так вот программа из учебника
(Нажмите, чтобы показать/скрыть)

kdevelop в проблемах пишет, что nNcelsius - declaration not found, терминал выдаёт то-же:

~$ g++ -c -o conversation /home/deny/projects/kdevelop/conversion.cpp
/home/deny/projects/kdevelop/conversion.cpp: In function ‘int main(int, char**)’:
/home/deny/projects/kdevelop/conversion.cpp:18: error: ‘nNcelsius’ was not declared in this scope

как правильно работать с функцией cin?
Новое - не значит лучшее.

Оффлайн Not eXist

  • Активист
  • *
  • Сообщений: 916
    • Просмотр профиля
Re: простая программа на с++ не компилируется
« Ответ #1 : 20 Февраль 2011, 08:36:20 »
Вам же компилятор всё и так говорит.
Переменная nNcelsius не объявлена. И если посмотреть, то так и есть. Вы объявили переменную nNCelsius, а пытаетесь использовать nNcelsius

Оффлайн [DarkNet]Alpha

  • Активист
  • *
  • Сообщений: 987
  • Эмоциональный эльдар
    • Просмотр профиля
    • EBM-радио
Re: простая программа на с++ не компилируется
« Ответ #2 : 20 Февраль 2011, 09:31:02 »
1. Зачем Вам stdio?
2. За using namespace std надо бить. Так нельзя. надо std::cin и std::cout.
И да, что это за ужасные аргументы main? Какой редактор их создал?
int main(int argc, char *argv[]) же
« Последнее редактирование: 20 Февраль 2011, 09:33:38 от [DarkNet]Alpha »

Оффлайн Orfer

  • Новичок
  • *
  • Сообщений: 42
    • Просмотр профиля
Re: простая программа на с++ не компилируется
« Ответ #3 : 20 Февраль 2011, 11:40:14 »
как правильно работать с функцией cin?

Я бы не стал называть cin функцией. Стандартным потоком, объектом, но не функцией.

Оффлайн [DarkNet]Alpha

  • Активист
  • *
  • Сообщений: 987
  • Эмоциональный эльдар
    • Просмотр профиля
    • EBM-радио
Re: простая программа на с++ не компилируется
« Ответ #4 : 20 Февраль 2011, 11:44:28 »
Чо умный да?
:)

Оффлайн Orfer

  • Новичок
  • *
  • Сообщений: 42
    • Просмотр профиля
Re: простая программа на с++ не компилируется
« Ответ #5 : 20 Февраль 2011, 12:09:20 »
2. За using namespace std надо бить. Так нельзя. надо std::cin и std::cout.

За using namespace std бить НЕ надо. Так пишут повсеместно в небольших программах

Оффлайн [DarkNet]Alpha

  • Активист
  • *
  • Сообщений: 987
  • Эмоциональный эльдар
    • Просмотр профиля
    • EBM-радио
Re: простая программа на с++ не компилируется
« Ответ #6 : 20 Февраль 2011, 12:19:58 »
Даже в маленькой программе есть вероятность сделать переменную с таким же именем, как у какой-нибудь из std. И тогда будет плохо.

Оффлайн kstati

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: простая программа на с++ не компилируется
« Ответ #7 : 20 Февраль 2011, 12:37:52 »
помогите разобраться, что не так вот программа из учебника

    int nNCelsius;
    cout << "Введите температуру по Цельсию: " ;
    cin >> nNcelsius;

/home/deny/projects/kdevelop/conversion.cpp:18: error: ‘nNcelsius’ was not declared in this scope
Риторический вопрос. Что такое регистрозависимость?

Оффлайн Sova777

  • Участник
  • *
  • Сообщений: 208
    • Просмотр профиля
    • Несколько слов о NetBeans C/C++ Pack'е
Re: простая программа на с++ не компилируется
« Ответ #8 : 20 Февраль 2011, 12:53:48 »
Даже в маленькой программе есть вероятность сделать переменную с таким же именем, как у какой-нибудь из std. И тогда будет плохо.
И более глобальная переменная будет скрыта. Нет? В этом нет ужаса. В крайнем случаи получишь ошибку компилятора. Что-то типа:
welcome.cc:39:5: error: reference to 'a' is ambiguous
b.h:12:9: error: candidates are: int bbb::a
a.h:12:9: error:                 int aaa::a
"using namespace" не нужно использовать заголовочных файлах (*.hpp). Но это другая история.
Пользователь OpenSolaris 2008.11, Ubuntu 8.10, Windows XP. Mac OS X не нравится, стараюсь не использовать.

Оффлайн Orfer

  • Новичок
  • *
  • Сообщений: 42
    • Просмотр профиля
Re: простая программа на с++ не компилируется
« Ответ #9 : 20 Февраль 2011, 13:40:28 »
помогите разобраться, что не так вот программа из учебника

    int nNCelsius;
    cout << "Введите температуру по Цельсию: " ;
    cin >> nNcelsius;

/home/deny/projects/kdevelop/conversion.cpp:18: error: ‘nNcelsius’ was not declared in this scope
Риторический вопрос. Что такое регистрозависимость?

Для компилятора имя nNCelsius будет отличаться от имени nNcelsius, поскольку буквы, набранные в разных регистрах будут иметь разный ASCII-код. Нужно объявлять и использовать переменные, пользуясь строго одним и тем же именем (с точки зрения регистра символов). Иначе - ошибка!
Думаю, что это приучает к аккуратности и внимательности!

Оффлайн Abbattar

  • Автор темы
  • Новичок
  • *
  • Сообщений: 45
  • Russische_Abbattar
    • Просмотр профиля
    • ЖЖ
Re: простая программа на с++ не компилируется
« Ответ #10 : 20 Февраль 2011, 18:20:45 »
Вам же компилятор всё и так говорит.
Переменная nNcelsius не объявлена. И если посмотреть, то так и есть. Вы объявили переменную nNCelsius, а пытаетесь использовать nNcelsius
Это задачка из учебника, который только начал изучать и как правильно объявить эту переменную я не в курсе, по-сути скопировал учебник (2001 года, старьё конечно. но другого пока нет), вот я и пытаюсь разобраться как всё сделать.

Пользователь решил продолжить мысль 20 Февраль 2011, 18:24:10:
помогите разобраться, что не так вот программа из учебника

    int nNCelsius;
    cout << "Введите температуру по Цельсию: " ;
    cin >> nNcelsius;

/home/deny/projects/kdevelop/conversion.cpp:18: error: ‘nNcelsius’ was not declared in this scope
Риторический вопрос. Что такое регистрозависимость?
О да-да, всё ошибка пропала фух!  :idiot2:  :D :D, только как теперь проверить результат, тип скомпилированного файла >>  application/x-object ?
« Последнее редактирование: 20 Февраль 2011, 18:46:11 от Abbattar »
Новое - не значит лучшее.

Оффлайн Orfer

  • Новичок
  • *
  • Сообщений: 42
    • Просмотр профиля
Re: простая программа на с++ не компилируется
« Ответ #11 : 20 Февраль 2011, 19:02:54 »
О да-да, всё ошибка пропала фух!  :idiot2:  :D :D, только как теперь проверить результат, тип скомпилированного файла >>  application/x-object ?
В терминале перейти в каталог, где скомпилирована программа, затем её запустить
./имя_программы

Оффлайн Abbattar

  • Автор темы
  • Новичок
  • *
  • Сообщений: 45
  • Russische_Abbattar
    • Просмотр профиля
    • ЖЖ
Re: простая программа на с++ не компилируется
« Ответ #12 : 20 Февраль 2011, 19:08:00 »
Цитировать
В терминале перейти в каталог, где скомпилирована программа, затем её запустить
./имя_программы
ну это я и попробовал - не вышло потому и спрашиваю
Новое - не значит лучшее.

Оффлайн Orfer

  • Новичок
  • *
  • Сообщений: 42
    • Просмотр профиля
Re: простая программа на с++ не компилируется
« Ответ #13 : 20 Февраль 2011, 19:28:04 »
А почему не вышло? Что в терминале появилось?

Оффлайн kstati

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: простая программа на с++ не компилируется
« Ответ #14 : 20 Февраль 2011, 19:50:18 »
Если не указывать gcc куда переносить скомпилированный код, то он будет располагаться в a.out
То есть запускать надо ./a.out
А за одно изучить ключики gcc

 

Страница сгенерирована за 0.245 секунд. Запросов: 24.