VC超级菜鸟的问题 为什么会出error C2146: syntax error : missing ';' before identifier 'm_value'error C2501: 'smilPVALUE' : missing storage-class or type specifiers 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你是不是定义了一个结构体呀!你的结构体定义的时候是不是少了分号啊!例如:struct MYSTRUCT{ ....... .......};//注意在这里必须有分号 1、看一下是不是在给m_value赋值的上一行末尾没有写结束符号“;”。 下面是我的程序// 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+5class CSnmpManagerDlg : public CDialog{// Constructionpublic: 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// Implementationprotected: 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_) 没有得到smilPVALUE的定义,确定是否包含了该结构定义的头文件 把定义smilPVALUE的头文件#include进来 to xiaohyy(醉大饿极)smilPVALUE的定义保护在winsnmp.h中winsnmp.h在snmp.h中被#include "winsnmp.h" to xiaohyy(醉大饿极)smilPVALUE的定义包含在winsnmp.h中winsnmp.h在snmp.h中被#include "winsnmp.h" 这是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_) smilPVALUE 的头文件没有加入上述文件中! to zhouqingyuan(浪帆) smilPVALUE的头文件winsnmp.h已经加入到Snmp.h中了 揭帖了,自己没有写对smilPVALUE,应该是smiLPVALUE l是大写L。谢谢各位了 急求关于getsockname和getpeername函数在UDP中的应用 ListCtrl的排序问题 带checkbox的树形控件【如何做到至多勾选一个父节点下的两个子节点】 关于PRINTF的问题请教 strcmp返回值问题 SDI程序中菜单消息映射 有关同步的问题???? 一个关于监视文件系统的问题 托盘菜单的子项选中问题(开了一帖啦,没人回答出来),在线等(下午两点到六点) 编程语言书籍大家议,请大家发表一下对这几本书的看法。 问一个很实用的问题? 谁能给我一个简单的socket多用户,多线程的例子呀?要求服务端和客户端程序都有!
你的结构体定义的时候是不是少了分号啊!
例如:
struct MYSTRUCT{
.......
.......
};//注意在这里必须有分号
//#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_)
smilPVALUE的定义保护在winsnmp.h中
winsnmp.h在snmp.h中被#include "winsnmp.h"
smilPVALUE的定义包含在winsnmp.h中
winsnmp.h在snmp.h中被#include "winsnmp.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_)
smilPVALUE的头文件winsnmp.h已经加入到Snmp.h中了
应该是smiLPVALUE l是大写L。
谢谢各位了