bool CInetWrapper::OpenFtpConnection (LPCTSTR lpszServerName)
{
// internetconnect(inet_open,'ftp.site.ru',port,'login','pass',INTERNET_SERVICE_FTP,INTERNET_FLAG_PASSIVE,0);
if (OpenInternet() && m_hConnection == NULL)
// (HINTERNET,LPCSTR,INTERNET_PORT,LPCSTR,LPCSTR,DWORD,DWORD,DWORD);
typedef HINTERNET (__stdcall* InternetConnect_)(HINTERNET,LPCSTR,INTERNET_PORT,LPCSTR,LPCSTR,DWORD,DWORD,DWORD);
InternetConnect_ ic = (InternetConnect_)helper.GetProcAddressEx("wininet.dll", "InternetConnectA");
m_hConnection = ic(
m_hInternet,
lpszServerName? lpszServerName:
m_lpszServerName? m_lpszServerName: "localhost",
INTERNET_DEFAULT_FTP_PORT,
m_login,
m_password,
INTERNET_SERVICE_FTP,
0,
0);
return CheckError(m_hConnection != NULL);
}
和编译器说:1> ------ Build build:Project:klstart,Configuration:Debug Win32 ------ 1 GT; HTTPReader.cpp 1> c:\ u \ admin \ visual studio 2010 \ projects \ klstart \ klstart \ httpreader.cpp(100):错误C2065:'InternetConnect_':未声明的标识符 1> c:\ u \ admin \ visual studio 2010 \ projects \ klstart \ klstart \ httpreader.cpp(100):错误C2146:语法错误:缺少';'在标识符“帮助者”之前 我写错了什么?
答案 0 :(得分:2)
您忘记将if
的真分支包装成复合语句。
基本上,问题与这段代码中的问题相同
if (some_condition)
typedef int MyType;
MyType i; // ERROR: `MyType` is undeclared identifier
...
在上面的简单例子中,想象中的“作者”想要这样做
if (something)
{
typedef int MyType;
MyType i;
...
}
但是他忘了把那些{}
放在那里,结果却完全不同了。你在代码中犯了同样的错误。
由于您未在if
之后创建复合语句(使用{}
),因此if
的真正分支中包含的唯一部分是typedef
没有别的。具有唯一typedef
的分支是一个单独的本地范围,在if
之后立即结束。这意味着在您的if
类型名称InternetConnect_
不再为人所知之后。
将typedef
放在if
之前,或将真正的分支包装成一对{}
。
答案 1 :(得分:-1)
尝试使用#include <cstdlib>
或尝试使用struct,会更简单易懂,更少出错。