0
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> ------ビルド開始:プロジェクト:klstart、構成:Debug Win32 ------ 1> 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:構文エラー: ない ';' 識別子の前に'ヘルパー'私が間違って書いたものは何ですか?

4

2 に答える 2

3

あなたの true ブランチを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、真のブランチを のペアにラップします{}

于 2012-10-27T19:09:56.547 に答える
-1

使ってみて#include <cstdlib>

または、using 構造体を試すと、よりシンプルで従うのが簡単になり、エラーの可能性が低くなります。

于 2012-10-27T19:06:57.330 に答える