一个lib开发包,有多个.h文件,把这个.h文件include到文件时,总提示:
error C2146: syntax error : missing ';' before identifier 'oid'
定位到这个被include 的头文件中:
typedef u_long oid;//就是这句出错。

解决方案 »

  1.   

    头文件没有包含,意思是u_long这个类型编译器不认识
      

  2.   

    u_long 没有定义导致的,添加:typedef unsigned long u_long;或者引用:
    #include <WinSock.h>
      

  3.   

    没有定义u_long如果u_long是一个无符号整形,你可以加上: typedef u_long unsigned long
      

  4.   


    u_long未定义,那个开发包的头文件的include是不是有顺序的?或者直接在前面加一句typedef unsigned long u_long; 
      

  5.   

    直接加windows.h看看,不然就直接定义u_long类型
      

  6.   

    有很多的u_char和u_long,包含<windsock.h>是不报这个错了,但又有其它错:
    f:\bookwork\snmplib\include\snmp_api.h(656) : error C2065: 'va_alist' : undeclared identifier
    f:\bookwork\snmplib\include\snmp_api.h(656) : error C2182: 'DEBUGP' : illegal use of type 'void'
    出错语句:
    #if HAVE_STDARG_H
    void DEBUGP (const char *, ...);
    #else
    void DEBUGP (va_alist);
    #endif
    是不是因为这个开发包是C语言写成的原因?
      

  7.   

    在包含这些头文件前,包含:stdafx.h试试!
      

  8.   

    是一个snmp开发包。一个lib和多个头文件。
      

  9.   

    这些头文件前面都有如下代码:
    #ifdef __cplusplus
    extern "C" {
    #endif
      

  10.   

    MFC没有定义u_long的变量,可以自己添加,估计你是引用的别人在其他环境里的代码
    这个问题常常有,有经验就好了。 
      

  11.   


    和这个没关系,他没有DEMO程序?看下INCLUDE关系
      

  12.   

    那个问题没有了,但又有其它错:
    f:\bookwork\snmplib\include\snmp_api.h(656) : error C2065: 'va_alist' : undeclared identifier
    f:\bookwork\snmplib\include\snmp_api.h(656) : error C2182: 'DEBUGP' : illegal use of type 'void'
    出错语句:
    #if HAVE_STDARG_H
    void DEBUGP (const char *, ...);
    #else
    void DEBUGP (va_alist);
    #endif
    是不是因为这个开发包是C语言写成的原因?