Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;类型定义错误_C++_Visual Studio_Typedef - Fatal编程技术网

C++ C++;类型定义错误

C++ C++;类型定义错误,c++,visual-studio,typedef,C++,Visual Studio,Typedef,编译器说:1>----构建已启动:项目:klstart,配置:调试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(10

编译器说:1>----构建已启动:项目:klstart,配置:调试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:语法错误:缺少“;”在标识符“helper”之前 我写错了什么?

尝试使用
#include


或者尝试使用struct,会更简单,更容易理解,出错的机会更少

您忘了将
if
的真正分支包装到复合语句中

基本上,问题与这段代码中的问题相同

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);
}
在上面这个简单的例子中,虚构的“作者”想要这样做

if (some_condition)
  typedef int MyType;
  MyType i; // ERROR: `MyType` is undeclared identifier
  ...
但是他忘了把那些
{}
放在那里,结果是完全不同的东西。你在代码中犯了同样的错误

由于您没有在
if
之后创建复合语句(使用
{}
),因此
if
的真正分支中包含的唯一部分是您的
typedef
,没有其他内容。带有唯一
typedef
的分支是一个单独的局部作用域,它在
if
之后立即结束。这意味着在您的
if
typename
InternetConnect\uu
之后,将不再知道


要么将您的
typedef
放在
if
之前,要么将真正的分支包装成一对
{}

从您发布的内容中无法得到有意义的解释。不管是什么原因造成的,它都在别的地方。提供更多的上下文。通过
ic
的调用是否真的在声明
ic
后立即进行,如上述代码所示?我有点怀疑它(代码对齐方式不同…)我正在添加这个头,但没有任何更改:(.不编译。此代码运行typedef BOOL(_stdcall*InternetCloseHandle)(HINTERNET);InternetCloseHandle\uinternetclosehandle=(InternetCloseHandle)helper.GetProcAddressEx(“wininet.dll”,“InternetCloseHandle”);if(m_HINTERNET)\u InternetCloseHandle(m_hInternet),;
if (something)
{
  typedef int MyType;
  MyType i; 
  ...
}