powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / undeclared identifier
25 сообщений из 27, страница 1 из 2
undeclared identifier
    #34524798
Фотография Burzum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Был проект написанный в vs2004. Нормально компилировался. Открываю в 2005-й. Получаю на следующий код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
for(int tries= 0 ;tries< 20 ;++tries)
{
     HttpAddRequestHeaders(hRequest...
     ...
     ...
     else if ( lastErr == ERROR_INTERNET_TIMEOUT ) 
     {
           ErrText="1Сервер не ответил.\nПревышено время ожидания.";
           break;
     }
}
if(tries== 20 ) ErrText="Ошибка доступа к серверу.";  //<-ошибка
ошибку
error C2065: 'tries' : undeclared identifier

Как это понимать и почему в предыдущей версии vs не ругался на эту строку?
...
Рейтинг: 0 / 0
undeclared identifier
    #34524804
enkarito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видимость переменной только в цикле, вне цикла этой переменной - нет.
Попробуйте так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
int tries;
for(tries= 0 ;tries< 20 ;++tries)
{
     HttpAddRequestHeaders(hRequest...
     ...
     ...
     else if ( lastErr == ERROR_INTERNET_TIMEOUT ) 
     {
           ErrText="1Сервер не ответил.\nПревышено время ожидания.";
           break;
     }
}
if(tries== 20 ) ErrText="Ошибка доступа к серверу.";  //<-ошибка
...
Рейтинг: 0 / 0
undeclared identifier
    #34524806
Фотография Burzum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enkaritoВидимость переменной только в цикле, вне цикла этой переменной - нет.
Попробуйте так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
int tries;
for(tries= 0 ;tries< 20 ;++tries)
{
     HttpAddRequestHeaders(hRequest...
     ...
     ...
     else if ( lastErr == ERROR_INTERNET_TIMEOUT ) 
     {
           ErrText="1Сервер не ответил.\nПревышено время ожидания.";
           break;
     }
}
if(tries== 20 ) ErrText="Ошибка доступа к серверу.";  //<-ошибка

Помогло, а почему в 2004 всё работало?

Теперь вылетает ещё 10 ошибок:
автор
1>Authorizer.obj : error LNK2019: unresolved external symbol __imp__InternetCloseHandle@4 referenced in function "public: bool __thiscall CAuthorizerApp::DoRequest(class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > >,class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > > &)" (?DoRequest@CAuthorizerApp@@QAE_NV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@AAV23@@Z)

1>Authorizer.obj : error LNK2019: unresolved external symbol __imp__InternetReadFile@16 referenced in function "public: bool __thiscall CAuthorizerApp::DoRequest(class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > >,class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > > &)" (?DoRequest@CAuthorizerApp@@QAE_NV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@AAV23@@Z)

1>Authorizer.obj : error LNK2019: unresolved external symbol __imp__HttpSendRequestA@20 referenced in function "public: bool __thiscall CAuthorizerApp::DoRequest(class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > >,class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > > &)" (?DoRequest@CAuthorizerApp@@QAE_NV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@AAV23@@Z)
...

Может быть существует способ более правильной конвертации из 2004 в 2005, чем простое открытие?
...
Рейтинг: 0 / 0
undeclared identifier
    #34524813
Фотография Burzum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и философский вопрос: "Стоит ли переходить на vs 2005?"
...
Рейтинг: 0 / 0
undeclared identifier
    #34525131
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Burzum
Теперь вылетает ещё 10 ошибок:
автор
1>Authorizer.obj : error LNK2019: unresolved external symbol __imp__InternetCloseHandle@4 referenced in function "public: bool __thiscall CAuthorizerApp::DoRequest(class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > >,class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > > &)" (?DoRequest@CAuthorizerApp@@QAE_NV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@AAV23@@Z)

1>Authorizer.obj : error LNK2019: unresolved external symbol __imp__InternetReadFile@16 referenced in function "public: bool __thiscall CAuthorizerApp::DoRequest(class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > >,class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > > &)" (?DoRequest@CAuthorizerApp@@QAE_NV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@AAV23@@Z)

1>Authorizer.obj : error LNK2019: unresolved external symbol __imp__HttpSendRequestA@20 referenced in function "public: bool __thiscall CAuthorizerApp::DoRequest(class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > >,class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > > &)" (?DoRequest@CAuthorizerApp@@QAE_NV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@AAV23@@Z)
...

Может быть существует способ более правильной конвертации из 2004 в 2005, чем простое открытие?

Надо подключить какую-то либу. Похоже, что при конвертации запись о ней пропала.
...
Рейтинг: 0 / 0
undeclared identifier
    #34525135
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BurzumНу и философский вопрос: "Стоит ли переходить на vs 2005?"

Есстственно. Более строгие правила, как ты убедился выше, будут помогать тебе избежать ошибок.
...
Рейтинг: 0 / 0
undeclared identifier
    #34525216
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то раньше надо было писать аккуратнее, еще в середине 90-х чтобы правильно работало была придумана конструкция
# define for if (false); else for
...
Рейтинг: 0 / 0
undeclared identifier
    #34526058
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Burzum пишет:
> Помогло, а почему в 2004 всё работало?

Потому что не соответствовало стандарту.
Теперь в 2005 - соответствует. А не делали они это потому
что у них дофига программ было, где это использовалось,
постепенно все переписали, в 2005 переключились на правильное
поведение.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
undeclared identifier
    #34527110
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Burzum
Код: plaintext
1.
2.
3.
4.
5.
6.
for(int tries= 0 ;tries< 20 ;++tries)
{
     ...
     ...
}
if(tries== 20 ) ErrText="Ошибка доступа к серверу.";  //<-ошибка
вай, это к проктологу, лечить моск
...
Рейтинг: 0 / 0
undeclared identifier
    #34527135
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blindedВообще-то раньше надо было писать аккуратнее, еще в середине 90-х чтобы правильно работало была придумана конструкция
# define for if (false); else for

А теперь можно писать тяп-ляп, все равно компилятор исправит. ;)
...
Рейтинг: 0 / 0
undeclared identifier
    #34527198
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет просто сие изменение прошло в draft году в 95
...
Рейтинг: 0 / 0
undeclared identifier
    #34527994
Фотография Burzum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh Burzum
Теперь вылетает ещё 10 ошибок:
автор
1>Authorizer.obj : error LNK2019: unresolved external symbol __imp__InternetCloseHandle@4 referenced in function "public: bool __thiscall CAuthorizerApp::DoRequest(class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > >,class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > > &)" (?DoRequest@CAuthorizerApp@@QAE_NV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@AAV23@@Z)

1>Authorizer.obj : error LNK2019: unresolved external symbol __imp__InternetReadFile@16 referenced in function "public: bool __thiscall CAuthorizerApp::DoRequest(class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > >,class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > > &)" (?DoRequest@CAuthorizerApp@@QAE_NV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@AAV23@@Z)

1>Authorizer.obj : error LNK2019: unresolved external symbol __imp__HttpSendRequestA@20 referenced in function "public: bool __thiscall CAuthorizerApp::DoRequest(class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > >,class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > > &)" (?DoRequest@CAuthorizerApp@@QAE_NV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@AAV23@@Z)
...

Может быть существует способ более правильной конвертации из 2004 в 2005, чем простое открытие?

Надо подключить какую-то либу. Похоже, что при конвертации запись о ней пропала.

Вроде бы записи не пропадали. Пробовал подключать wininet.h и afxinet.h, не помогло.
...
Рейтинг: 0 / 0
undeclared identifier
    #34528150
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BurzumВроде бы записи не пропадали. Пробовал подключать wininet.h и afxinet.h, не помогло.

библиотеку , а не заголовочный файл.
...
Рейтинг: 0 / 0
undeclared identifier
    #34530832
Фотография Burzum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh BurzumВроде бы записи не пропадали. Пробовал подключать wininet.h и afxinet.h, не помогло.

библиотеку , а не заголовочный файл.
нагуглил, как подключать, попробовал, помогло.
Код: plaintext
1.
2.
#include <wininet.h>
#pragma comment(lib, "wininet")
...
Рейтинг: 0 / 0
undeclared identifier
    #34530846
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Burzum Akh BurzumВроде бы записи не пропадали. Пробовал подключать wininet.h и afxinet.h, не помогло.

библиотеку , а не заголовочный файл.
нагуглил, как подключать, попробовал, помогло.
Код: plaintext
1.
2.
#include <wininet.h>
#pragma comment(lib, "wininet")
Лучше почитай учебник, что такое компиляция и что такое линковка и чем они отличаются.
...
Рейтинг: 0 / 0
undeclared identifier
    #34531097
Фотография Burzum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlЛучше почитай учебник, что такое компиляция и что такое линковка и чем они отличаются.
Чем я и собирался заняться в ближайшее время. Проблема в том, что нужно сначала дописать прогу, написанную другим программистом, а потом уже начинать учить с++.
...
Рейтинг: 0 / 0
undeclared identifier
    #34531195
Serik Akhmetov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BurzumЧем я и собирался заняться в ближайшее время. Проблема в том, что нужно сначала дописать прогу, написанную другим программистом, а потом уже начинать учить с++.Точно ! Все как в анекдотах про русских программистов.
...
Рейтинг: 0 / 0
undeclared identifier
    #34531289
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Burzum
нагуглил, как подключать, попробовал, помогло.
Код: plaintext
1.
2.
#include <wininet.h>
#pragma comment(lib, "wininet")


А подключить в опциях компилятора никак?
...
Рейтинг: 0 / 0
undeclared identifier
    #34531349
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blindedВообще-то раньше надо было писать аккуратнее, еще в середине 90-х чтобы правильно работало была придумана конструкция
# define for if (false); else for

Гмм. А тайный шмышл ???
...
Рейтинг: 0 / 0
undeclared identifier
    #34531376
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А тайный смысл- пишешь
Код: plaintext
1.
for (int i =  0 ; ...)
а компилятор понимает так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
if (false)
 ;
else
{
  int i;
  for (i =  0 ;...) 
}
И вроде как кривой компилер понимает все как в стандарте.
...
Рейтинг: 0 / 0
undeclared identifier
    #34531455
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну да, ну да
а фигурные скобки, ясен пень, с потолка зарисовались
...
Рейтинг: 0 / 0
undeclared identifier
    #34531486
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)ну да, ну да
а фигурные скобки, ясен пень, с потолка зарисовались

Не. Имхо, на самом деле пример верный, но blinded его не правельно трактовал.

По стандарту пременная указанная в точке инициализации статемента не должна за него выходить. В кривых компиляторах для for допускалось использование i за ним. Но если этот for вложить в одно из действий по if, то i уже дальше не будет разрешено использовать, т.к. в этом случае, область видимости уже будет не та. Т.е.


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
for (int i =  0 ;...) 
i= 5 ;//Все ок, кривой компилятор пропускает.


if (false)
 ;
else
  for (int i =  0 ;...);
i= 5 ;//Фиг. i объявлена внутри if (!)
...
Рейтинг: 0 / 0
undeclared identifier
    #34531567
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akhно blinded его не правельно трактовал. трактовал он его как раз таки правильно, явно указав область видимости.
...
Рейтинг: 0 / 0
undeclared identifier
    #34531590
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я к тому, что если пишется #define то уж наверно надо писать его правильно, а не в форме египетского ребуса - здесь играем, здесь не играем, а тут рыбу заворачивали
...
Рейтинг: 0 / 0
undeclared identifier
    #34531876
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo Akhно blinded его не правельно трактовал. трактовал он его как раз таки правильно, явно указав область видимости.

Да, точно. Не придал правельноме значение слову: компилятор "понимает".

Сорри.
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / undeclared identifier
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]