Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 06.07.2007, 08:45   #1
Sota
Let's keep talking
Форумчанин Подтвердите свой е-майл
 
Аватар для Sota
 
Регистрация: 02.07.2007
Сообщений: 217
Вопрос Казус с синтаксисом???...

Доброе время суток, господа программисты! Обращаюсь за помощью к более опытным кодерам. Недавно я начал изучение языка С++, примерно две недели, успехи есть. Но вот я написал маленький код, но компилятор постоянно выдаёт ошибки при попытке скомпилировать этот код. Искал ошибку несколько дней, но так и не нашёл. Прошу поэтому помочь. Компилятор у меня от Borland'a, который идёт в поставке вместе с визуальной средой разработки Borland C++ Builder 6. Код же имеет следующий вид:

Код:
 
#include <iostream>
using namespace std;
void func1();
void func2();
int count; // глобальная переменная
int main()
{
  int i; // локальная переменная
  for(i=0; i<10; i++) {
    count = i * 2;
    func1();
  }
  return 0;
}
void func1()
{
  cout << "count: " << count; // обращение к глобальной переменной
  cout << '\n'; 
  func2();
}
void func2()
{
  int count; // локальная переменная
  for(count=0; count<3; count++) cout << '.';
}
Ошибка касается какой-то двусмысленности. Я конечно понимаю, что у меня локальная и глобальная переменная имеют одинаковые имена, но ведь в спорных вопросах наиболее высокий приоритет имеет локальная переменная, и некаких ошибок появляться не должно. на всякий случай я попробовал сделать имена разными, но всё так и осталось на своих местах. Вот поэтому-то я и вошёл в ступор и прошу у вас помощи. Заранее благодарен.
С уважением Sota !
Лучше С++, чем ++С...
Sota вне форума
Старый 07.07.2007, 12:54   #2
Сильванович Михаил
Студент
Форумчанин
 
Регистрация: 10.11.2006
Сообщений: 196
По умолчанию

У меня оболочка Code::Blocks v.1.0 (+ компилятор mingw) - ошибок не выдает и все компилирует - даже не знаю что бы это могло быть .
З.Ы. Но лучше, чтобы имена локальной и глобальной переменных не совпадали...
Visita Interiorem Terrae Rectificando Operae Lapidem...

Последний раз редактировалось Сильванович Михаил; 07.07.2007 в 13:24.
Сильванович Михаил вне форума
Старый 07.07.2007, 15:38   #3
Sota
Let's keep talking
Форумчанин Подтвердите свой е-майл
 
Аватар для Sota
 
Регистрация: 02.07.2007
Сообщений: 217
Лампочка

Надо тогда будет попробовать на другом компиляторе попробовать...
Лучше С++, чем ++С...
Sota вне форума
Старый 07.07.2007, 16:01   #4
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Можете попробовать вызывать func2 из основного цикла, а не из func1...
Код:
int main()
{
  int i; // локальная переменная
  for(i=0; i<10; i++) {
    count = i * 2;
    func1();
    func2();
  }
  return 0;
}
Alex21 вне форума
Старый 07.07.2007, 20:15   #5
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

В С++ 5.3 компилиться без проблем. А вы пробовали менять имя переменной???? count например на counter тогда работает без проблем. И именно с этим связана ошибка в С++ Builder он не может перегрузить операцию (функцию) стандартного алгоритма подчета count библиотеки std. Видимо реализация count в хедерах присваивает ему статус "зарезервированного" выражения (мы ведь не можем давать if, for именам переменных)
merax вне форума
Старый 08.07.2007, 11:55   #6
Sota
Let's keep talking
Форумчанин Подтвердите свой е-майл
 
Аватар для Sota
 
Регистрация: 02.07.2007
Сообщений: 217
Смех

Проблема решена!!!
Совет от Alex21 не помог в том плане, что ошибка осталась. Тогда я попробовал с компилировать исх.текст в Mandriva_Linux с помощью GCC 4.0. И к моему удивлению всё отлично скомпилировалось. Но мне нужно всётаки скомпилить в C++ Builder'e, и я изменил имя глобальной и локальной переменных на var1 и var2 соответственно. После этого всё скомпилировалось без вопросов. Похоже действитеьно имя COUNT зарезервирована для функции стандартной библиотеки. Спасибо merax'у и ВСЕМ, кто пытался помочь.
С уважением Sota.
Лучше С++, чем ++С...
Sota вне форума
Старый 17.07.2007, 19:15   #7
Sota
Let's keep talking
Форумчанин Подтвердите свой е-майл
 
Аватар для Sota
 
Регистрация: 02.07.2007
Сообщений: 217
По умолчанию

Тему можно закрыть...
Лучше С++, чем ++С...
Sota вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с синтаксисом? Geddar PHP 1 30.06.2008 16:44