为什么会出error C2146: syntax error : missing ';' before identifier 'm_value'
error C2501: 'smilPVALUE' : missing storage-class or type specifiers

解决方案 »

  1.   

    你是不是定义了一个结构体呀!
    你的结构体定义的时候是不是少了分号啊!
    例如:
    struct MYSTRUCT{
        .......
        .......
    };//注意在这里必须有分号
      

  2.   

    1、看一下是不是在给m_value赋值的上一行末尾没有写结束符号“;”。
      

  3.   

    下面是我的程序// SnmpManagerDlg.h : header file
    //#if !defined(AFX_SNMPMANAGERDLG_H__55D886A8_57A0_47C9_8510_DD4C4BC0F83E__INCLUDED_)
    #define AFX_SNMPMANAGERDLG_H__55D886A8_57A0_47C9_8510_DD4C4BC0F83E__INCLUDED_#if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000#include "Snmp.h"
    /////////////////////////////////////////////////////////////////////////////
    // CSnmpManagerDlg dialog
    #define wMsg WM_USER+5
    class CSnmpManagerDlg : public CDialog
    {
    // Construction
    public:
    CSnmpManagerDlg(CWnd* pParent = NULL); // standard constructor// Dialog Data
    //{{AFX_DATA(CSnmpManagerDlg)
    enum { IDD = IDD_SNMPMANAGER_DIALOG };
    CString m_sAgent;
    CString m_slpin;
    CString m_slpout;
    CString m_sDesr;
    CString m_sName;
    CString m_sSysOid;
    CString m_sSysTime;
    //}}AFX_DATA // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CSnmpManagerDlg)
    public:
    virtual BOOL DestroyWindow();
    protected:
    virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
    //}}AFX_VIRTUAL// Implementation
    protected:
    void Start();
    void Draw(int x,int y,CDC* pDc);
    HICON m_hIcon;
    LPTSTR m_Agent;
    BOOL m_bNext;
    CSnmp pSnmp;
    CDC* pDc;
    int m_nCount;
    double m_nIpin;
    double m_preIn;
    char* str[10];
    double m_nTrack; CString m_IpNext;
    LPTSTR m_sOid[10];
    LPTSTR m_initOid[10];
    smilPVALUE m_value[10]; //就是在这一行出现错误提示
    LPTSTR m_OidNext[50];
    LPTSTR m_valueNext[50];
    // Generated message map functions
    //{{AFX_MSG(CSnmpManagerDlg)
    virtual BOOL OnInitDialog();
    afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
    afx_msg void OnPaint();
    afx_msg HCURSOR OnQueryDragIcon();
    afx_msg void OnAddagent();
    afx_msg void OnEnd();
    afx_msg void OnGetnext();
    afx_msg void OnSelchangeList1();
    afx_msg void OnRecv();
    afx_msg void OnTimer(UINT nIDEvent);
    afx_msg void OnSet();
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
    private:
    void Next(LPTSTR Oid);
    };//{{AFX_INSERT_LOCATION}}
    // Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_SNMPMANAGERDLG_H__55D886A8_57A0_47C9_8510_DD4C4BC0F83E__INCLUDED_)
      

  4.   

    没有得到smilPVALUE的定义,确定是否包含了该结构定义的头文件
      

  5.   

    把定义smilPVALUE的头文件#include进来
      

  6.   

    to  xiaohyy(醉大饿极)
    smilPVALUE的定义保护在winsnmp.h中
    winsnmp.h在snmp.h中被#include "winsnmp.h"
      

  7.   

    to  xiaohyy(醉大饿极)
    smilPVALUE的定义包含在winsnmp.h中
    winsnmp.h在snmp.h中被#include "winsnmp.h"
      

  8.   

    这是Snmp.h
    // Snmp.h: interface for the CSnmp class.
    //
    //////////////////////////////////////////////////////////////////////#if !defined(AFX_SNMP_H__A6E53F9B_809B_494D_9599_67ECCEE0C591__INCLUDED_)
    #define AFX_SNMP_H__A6E53F9B_809B_494D_9599_67ECCEE0C591__INCLUDED_#if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000#include "winsnmp.h"
    #include "stdafx.h"class CSnmp : public CObject  
    {
    public:
    CSnmp();
    virtual ~CSnmp();private:
    smiLPUINT32 nMajorVersion,nMinorVersion,nLevel;
    smiLPUINT32 nTranslateMode,nRetransmitMode;
    HSNMP_SESSION session;
    CString strErr;
    HSNMP_PDU m_hpdu;
    HSNMP_VBL m_hvbl;public:
    int nCount;
    BOOL sessionID;public:
    CreateSession(HWND hWnd,UINT wMsg);
    Send(LPCSTR address,const char* community);
    CreatePdu(
          smiINT PDU_type,       // PDU type 
              smiINT32 request_id,   // PDU request identifier 
          smiINT error_status,   // PDU error status, unless type is SNMP_PDU_GETBULK
      smiINT error_index   // PDU error index, unless type is SNMP_PDU_GETBULK
         );
    CreateVbl(LPCSTR name,smiLPVALUE pvalue);
    Register();
    Receive(LPTSTR *name,smiLPVALUE *value);
    SetVbl(LPCSTR name);
    };#endif // !defined(AFX_SNMP_H__A6E53F9B_809B_494D_9599_67ECCEE0C591__INCLUDED_)
      

  9.   

    smilPVALUE 的头文件没有加入上述文件中!
      

  10.   

    to zhouqingyuan(浪帆) 
    smilPVALUE的头文件winsnmp.h已经加入到Snmp.h中了
      

  11.   

    揭帖了,自己没有写对smilPVALUE,
    应该是smiLPVALUE  l是大写L。
    谢谢各位了