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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
stranger140569
2 / 0 / 1
Регистрация: 25.01.2011
Сообщений: 27
#1

Как объявить глобальную переменную в Dev-C++ 4.9.9.2? - C++

28.05.2012, 22:27. Просмотров 1483. Ответов 12
Метки нет (Все метки)

Попробовал написать из справочника по С++ такую программу:
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
#include <iostream>
#include <windows.h>
using namespace std;
 
void func1();
void func2();
 
int count; // Это глобальная переменная.
 
int main()
{
    int i; // Это локальная переменная.
 
    for(i=0; i<10; i++)
    {
        count = i * 2;
        func1();
    }
 
    system("PAUSE");
    return 0;
}
 
void func1()
{
    cout << "count: " << count; // Обращение к глобальной
                                // переменной.
    cout << '\n'; // Вывод символа новой строки.
    func2();
}
 
void func2()
{
    int count; // Это локальная переменная.
 
    for(count=0; count<3; count++) cout << '.';
}

а компилятор выдает ошибку: In function `int main()':
`count' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)

и еще:

In function `void func1()': `count' undeclared (first use this function)

В чем может быть проблема. Подскажите пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2012, 22:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как объявить глобальную переменную в Dev-C++ 4.9.9.2? (C++):

Немогу объявить глобальную переменную - C++
В пустом заголовочном файле пишу int some_global_variable; и компилятор выдает ошибку hand.obj : error LNK2005: &quot;int...

Как объявить глобальную ссылку на клас с конструктором, принимающим один параметр - C++
Столкнулся с проблемой. Пытаюсь в классе №1 создать переменную класса №2, а уже потом в конструкторе класса №1 проинициализировать его, но...

Как обьявить глобальную переменную - C++
Как объявить глобальную переменную Есть несколько *CPP* и *.h* файлы. Надо объявить переменную HWND hwnd чтобы она была доступна в...

Как создать глобальную переменную? - C++
Создаю небольшой проект. Несколько функций и собственно тело программы. В теле объявил переменную int rep. Далее мне надо обратиться к ней...

Как сделать одну глобальную переменную - C++
Есть многофайловый проект. К примеру 5 файлов(5 &quot;H&quot; файлов+для них 5 &quot;срр&quot; файлов, пускай в каждом файле будет лежать класс) и есть...

Как обьявить глобальную переменную в функции? - C++
Вопрос как объявить переменную в функции чтобы ей можно было пользоваться везде?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Evg
Эксперт CАвтор FAQ
17640 / 5864 / 379
Регистрация: 30.03.2009
Сообщений: 16,169
Записей в блоге: 26
28.05.2012, 22:42 #2
Вообще говоря программа написана правильно и успешно компилируется
stranger140569
2 / 0 / 1
Регистрация: 25.01.2011
Сообщений: 27
28.05.2012, 23:17  [ТС] #3
Странно, в Visual C++ 2005 все нормально а в Dev-C++ 4.9.2.2 не хочет. Может баг?
ValeryS
Модератор
6558 / 5024 / 464
Регистрация: 14.02.2011
Сообщений: 16,780
28.05.2012, 23:20 #4
попробуй ему ясно сказать что она глобальная
C++
1
 ::count = i * 2;
Evg
Эксперт CАвтор FAQ
17640 / 5864 / 379
Регистрация: 30.03.2009
Сообщений: 16,169
Записей в блоге: 26
29.05.2012, 00:05 #5
Однако это gcc буянит: http://codepad.org/a7xIKh7i
Правда не втыкаю, откуда он там неоднозначность выкопал.

В std:: нет какого-нибудь count?

Добавлено через 5 минут
Едем дальше: http://codepad.org/BUaB5s0Z
Пипелац какой-то. На локальном gcc косяка такого нет

stranger140569, получи препроцессорную выдачу на своём компиляторе (запустить компилятор с опцией -E) и поищи там count. Может реально среди глобальной области видимости что-то просочилось

Добавлено через 5 минут
Если удалить глобальную переменную count, то продолжается почти та же байда. Так что в конкретной версии gcc, которая стоит на codepad.org, в хидере iostream присутствует глобальное имя count. У ТС'а видимо та же история. А потому надо воспользоваться советом из comment 4

Ситуёвина весьма напоминает это: [Задача] Очередной пример трудноуловимой ошибки
Пора законодательно запретить курить тем, кто разрабатывает стандарты, выпускает компиляторы и т.п.
sandye51
программист С++
682 / 584 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
29.05.2012, 00:11 #6
Цитата Сообщение от Evg Посмотреть сообщение
В std:: нет какого-нибудь count?
есть такой алгоритм
ValeryS
Модератор
6558 / 5024 / 464
Регистрация: 14.02.2011
Сообщений: 16,780
29.05.2012, 07:16 #7
count довольно популярное слово
скорее всего он есть в <iostream>
и пошло перекрытие имен
правда почему компилятор пишет "Не объявлен"
Цитата Сообщение от stranger140569 Посмотреть сообщение
count' undeclared
а не об перекрытие
или как я говорил
Цитата Сообщение от ValeryS Посмотреть сообщение
попробуй ему ясно сказать что она глобальная
или поменяй имя
например MyCount

Добавлено через 4 минуты
или убери
Цитата Сообщение от stranger140569 Посмотреть сообщение
using namespace std;
На сие размышления подвиг меня пост Evg,
Venzo
125 / 123 / 4
Регистрация: 03.07.2011
Сообщений: 354
29.05.2012, 08:22 #8
Цитата Сообщение от Evg Посмотреть сообщение
Однако это gcc буянит
а у меня на gcc скомпилировалось без ошибки
Evg
Эксперт CАвтор FAQ
17640 / 5864 / 379
Регистрация: 30.03.2009
Сообщений: 16,169
Записей в блоге: 26
29.05.2012, 08:31 #9
Цитата Сообщение от ZoRT Посмотреть сообщение
а у меня на gcc скомпилировалось без ошибки
Потому что у тебя другая версия gcc (g++) с другой реализацией библиотеки поддержки Си++ (и инклюда iostream)

Добавлено через 4 минуты
На codepad.org используется gcc-4.1.2
Под Dev-C++ инфу не нашёл, ставить неохота. Но, судя по размеру дистрибутива, там вообще gcc версии 3
Venzo
125 / 123 / 4
Регистрация: 03.07.2011
Сообщений: 354
29.05.2012, 08:40 #10
Цитата Сообщение от Evg Посмотреть сообщение
На codepad.org используется gcc-4.1.2
ага, у меня немного новее
Кот Ангенс
317 / 267 / 38
Регистрация: 24.05.2012
Сообщений: 629
29.05.2012, 08:42 #11
Забавно, проверил - в std действительно где-то есть count. Помогает и отключение namespace, и явное указание текущего пространства, и смена имени.
stranger140569
2 / 0 / 1
Регистрация: 25.01.2011
Сообщений: 27
29.05.2012, 18:37  [ТС] #12
Попробовал count изменит на Count. Все скомпилировалось нормально. Спасибо всем за помощь.
ValeryS
Модератор
6558 / 5024 / 464
Регистрация: 14.02.2011
Сообщений: 16,780
29.05.2012, 19:26 #13
Цитата Сообщение от stranger140569 Посмотреть сообщение
Спасибо всем за помощь.
для спасибы кнопка есть
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2012, 19:26
Привет! Вот еще темы с ответами:

Как правильно создать глобальную переменную? - C++
Как правильно создать глобальную переменную? Если она будет в заголовочном файле, то при подключении этого файла к другим cpp, эта...

Как лучше сделать глобальную переменную? - C++
Интернет совсем пустой в плане глобальных переменных на с++ Задача следующая: 1. Нужно создать много глобальных переменных будет...

Как и где описать глобальную переменную? - C++
Как и где описать глобальную переменную? В главном класее я определяю указутель на CDaoDatabase CDaoDatabase* DBase; DBase = new...

Как глобальную переменную засунуть в структуру? - C++
#include&lt;stdio.h&gt; #include&lt;malloc.h&gt; #include&lt;string.h&gt; typedef struct Item { char *info; struct Item *next; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.05.2012, 19:26
Ответ Создать тему
Опции темы

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