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

испортился компилятор посмотрите - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
16.10.2011, 13:04     испортился компилятор посмотрите #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// 1.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
 
int main(int argc, char* argv[])
{
    for (int i=1;i<10;i++)
    {}
int i=1;
 
    return 0;
}
выводит ошибку
C:\Program Files\Microsoft Visual Studio\MyProjects\1\1.cpp(10) : error C2374: 'i' : redefinition; multiple initialization
C:\Program Files\Microsoft Visual Studio\MyProjects\1\1.cpp(8) : see declaration of 'i'

а раньше всё было нормально что делать помогите пожалуйста

Добавлено через 7 минут
компилятор mv c++ 6 (MVS 6 обрезаный)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2011, 13:04     испортился компилятор посмотрите
Посмотрите здесь:

посмотрите код C++
Посмотрите сюда C++
C++ Посмотрите код
Просто посмотрите! C++
C++ Посмотрите код
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
16.10.2011, 13:04
  #2

Не по теме:

Цитата Сообщение от Van111 Посмотреть сообщение
испортился компилятор
Цитата Сообщение от Van111 Посмотреть сообщение
mv c++ 6 (MVS 6 обрезаный)
срок годности истек

Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
16.10.2011, 13:06  [ТС]     испортился компилятор посмотрите #3
я его недавно переустановил перед этим делал восстановление системы
Wanderer1
23 / 23 / 4
Регистрация: 26.03.2011
Сообщений: 54
16.10.2011, 13:20     испортился компилятор посмотрите #4
не испортился ничего. два раза объявлять переменную нельзя. иногда можно ошибку прочесть если не сразу понятно
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
16.10.2011, 14:02  [ТС]     испортился компилятор посмотрите #5
так на дев с++ всё работает и раньше на mvc++ 6 работало а щас перестало
amor1k
Студент
 Аватар для amor1k
147 / 147 / 24
Регистрация: 18.01.2011
Сообщений: 469
16.10.2011, 14:08     испортился компилятор посмотрите #6
Все равно попробуйте изменить строку 7 на

C++
1
i=1;
И если не заработает, объявите переменную i в начале main.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
16.10.2011, 14:12     испортился компилятор посмотрите #7
Van111,
C++
1
2
3
4
5
for (int i=1;i<10;i++)// i находится в пространстве имен функции for()
{}
int i=1;// i находится в пространстве имен функции main()
// пространство имен функции for() выделяется из пространства имен функции main() 
// в итоге декларируется два статуса для одного адреса
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,428
16.10.2011, 14:15     испортился компилятор посмотрите #8
А на Dev 4.9.9.2 запустилось оО Странно.

Результат вывода i на экран: 1234567891. По моему он параметр цикла уничтожает после его обхода.

А вобще нельзя такого делать.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
16.10.2011, 14:16     испортился компилятор посмотрите #9
формально ошибки нет, почему нельзя? просто как видно, не каждый компилятор ест.
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
16.10.2011, 14:17  [ТС]     испортился компилятор посмотрите #10
а на mv c++ 6 намного код лучше компилирует чем dev c++
а то я думаю может на дев перейти
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,428
16.10.2011, 14:21     испортился компилятор посмотрите #11
Цитата Сообщение от alkagolik Посмотреть сообщение
формально ошибки нет, почему нельзя? просто как видно, не каждый компилятор ест.
Ну например задачу может прийдется показывать на других компьютерах, на которых есть только VS (как обычно и бывает), а там объясняй что у тебя дома все работает, а тут "машина - дура".
Wanderer1
23 / 23 / 4
Регистрация: 26.03.2011
Сообщений: 54
16.10.2011, 14:27     испортился компилятор посмотрите #12
Цитата Сообщение от MrGluck Посмотреть сообщение
Ну например задачу может прийдется показывать на других компьютерах, на которых есть только VS (как обычно и бывает), а там объясняй что у тебя дома все работает, а тут "машина - дура".
оказывается и на VS тоже работает, проверил. я сначала подумал, что такое реально нельзя делать
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
16.10.2011, 14:29     испортился компилятор посмотрите #13
Эта ошибка в vc6 была очень известна в своё время. В gcc (которым пользуется DevC++) она отсутствует. Поработайте с vc6, вы ещё много интересного о ней узнаете.

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

Не по теме:

В холодильнике хранили? Если нет - то понятно, в чём дело.

alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
16.10.2011, 14:29     испортился компилятор посмотрите #14
MrGluck, не машина, а реализация работы машины "человеками". кто виноват в том что
есть только VS (как обычно и бывает)
конечно надо учитывать особенности компилятора, никто и не спорит Страуструпп этому прямо учит. Но в том что в большинстве случаев стоит VS... кто-то же ее туда поставил, верно? Отсюда и уровень. Нельзя от компьютерщика скрывать работу компьютера, я за правку конфигов руками ))
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
16.10.2011, 14:30     испортился компилятор посмотрите #15
Цитата Сообщение от MrGluck Посмотреть сообщение
Ну например задачу может прийдется показывать на других компьютерах, на которых есть только VS (как обычно и бывает), а там объясняй что у тебя дома все работает, а тут "машина - дура".
объяснишь не ты первый, не ты последний.
Почему функция копирования строк не принимает два параметра?
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
16.10.2011, 14:37     испортился компилятор посмотрите #16
как вам такой фокус?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main(){
 
    for (int i = 0; i < 10; ++i)
    {
 
    }
    int i = 10;
 
    for (int i = 0; i < 3; ++i)
    {
        for (int i /*объявлена но к ней обратиться не получится*/ = 0; i < 3; ++i)
            std::cout << i << ' '<< i << std::endl;
    }
    std::cout << i << ' ' << std::endl;
 
    return 0;
}
Bers
Заблокирован
16.10.2011, 14:53     испортился компилятор посмотрите #17
Так то понятно - не хочешь проблем, пиши православный (потенциально безопасный) код.
Но все таки интересно, что об этом нюансе говорит стандарт языка?
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
16.10.2011, 15:40     испортился компилятор посмотрите #18
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Оно?
If the for-init-statement is a declaration, the scope of the name(s) declared extends to the end of the for-
statement. [ Example:
int i = 42;
int a[10];
for (int i = 0; i < 10; i++)
a[i] = i;
int j = i; // j = 42
- end example ]


пункт 6.5.3, сдуто с черновика принятого недавно стандарта.
Сыроежка
Заблокирован
16.10.2011, 17:50     испортился компилятор посмотрите #19
Цитата Сообщение от Van111 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// 1.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
 
int main(int argc, char* argv[])
{
    for (int i=1;i<10;i++)
    {}
int i=1;
 
    return 0;
}
выводит ошибку
C:\Program Files\Microsoft Visual Studio\MyProjects\1\1.cpp(10) : error C2374: 'i' : redefinition; multiple initialization
C:\Program Files\Microsoft Visual Studio\MyProjects\1\1.cpp(8) : see declaration of 'i'

а раньше всё было нормально что делать помогите пожалуйста

Добавлено через 7 минут
компилятор mv c++ 6 (MVS 6 обрезаный)
Если вы имеет дело с версией MVC++ 6, то переменные, объявленные в цикле, имеют область видимости тот внешний блок, в котором имеется предложение цикла. То есть после выхода из цикла, переменная продолжает "жить". Это естественно не соответствует стандарту С++ 2003, но тем не менее в те времена, когда появилась 6 вресия, стандарт С++ 2003 еще не был полностью реализован в компиляторах.

Поэтому компилятор вам правильно говорит о существовании ошибки, то есть в одной и той же области объявлений он встречает переопределение идентификатора.

Вам следует порльзоваться более современными компиляторами.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2011, 18:54     испортился компилятор посмотрите
Еще ссылки по теме:

я новенький....посмотрите.. C++
C++ Посмотрите на программу

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

Или воспользуйтесь поиском по форуму:
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
16.10.2011, 18:54  [ТС]     испортился компилятор посмотрите #20
а вот ещё одно предположение проблемы у меня после восстановления системы включилась автоматическая обновление ОС (а в неё входили net fraemwork и redistributable) я так думаю что они могли обновился и изменить mv c++ 6 щас она у меня вообще глючить стала.
из за этого могли начаться проблемы????????????????
P.S. я ещё дров на устанавливал стандартных
Yandex
Объявления
16.10.2011, 18:54     испортился компилятор посмотрите
Закрытая тема Создать тему
Опции темы

Текущее время: 20:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru