void main()
{
char a[94] =  "\x00\x10\x67\x00\xB1\x86\x0D\x0E\x0A\x0D\x00\x00\x08\x00\x45\x00"
  "\x00\x50\x00\xF2\x00\x00\x40\x06\xF8\x60\xC0\xA8\x00\x02\xC0\xA8"
  "\x00\x03\x00\x63\x00\x50\x01\x01\x01\x01\x02\x02\x02\x02\xA0\x02"
  "\x7F\xFF\xB6\xF4\x00\x0A\x03\x03\x0A\x01\x02\x04\x01\x09\x08\x0A"
  "\x3F\x3F\x3F\x3F\x00\x00\x00\x00\x00\x00\x30\x31\x32\x33\x34\x35"
  "\x36\x37\x38\x39\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39";
}/*
这个定义
出现在.cpp文件中,编译时报错error C2117: '' : array bounds overflow
出现在.c中,正常编译
*/

解决方案 »

  1.   

    数组越界了,改成char a[95] =  "\x00\x10\x67\x00\xB1\x86\x0D\x0E\x0A\x0D\x00\x00\x08\x00\x45\x00" 
      "\x00\x50\x00\xF2\x00\x00\x40\x06\xF8\x60\xC0\xA8\x00\x02\xC0\xA8" 
      "\x00\x03\x00\x63\x00\x50\x01\x01\x01\x01\x02\x02\x02\x02\xA0\x02" 
      "\x7F\xFF\xB6\xF4\x00\x0A\x03\x03\x0A\x01\x02\x04\x01\x09\x08\x0A" 
      "\x3F\x3F\x3F\x3F\x00\x00\x00\x00\x00\x00\x30\x31\x32\x33\x34\x35" 
      "\x36\x37\x38\x39\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39"; 
      

  2.   

    char a[] =  "\x00\x10\x67\x00\xB1\x86\x0D\x0E\x0A\x0D\x00\x00\x08\x00\x45\x00" 
      "\x00\x50\x00\xF2\x00\x00\x40\x06\xF8\x60\xC0\xA8\x00\x02\xC0\xA8" 
      "\x00\x03\x00\x63\x00\x50\x01\x01\x01\x01\x02\x02\x02\x02\xA0\x02" 
      "\x7F\xFF\xB6\xF4\x00\x0A\x03\x03\x0A\x01\x02\x04\x01\x09\x08\x0A" 
      "\x3F\x3F\x3F\x3F\x00\x00\x00\x00\x00\x00\x30\x31\x32\x33\x34\x35" 
      "\x36\x37\x38\x39\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39";直接这样就行了,让系统确定需要多大的空间
      

  3.   

    个数我会数,问题是:出现在.cpp文件中,编译时报错error C2117: '' : array bounds overflow
    出现在.c中,正常编译 解释一下!!!
      

  4.   

    要是我真的越界的C编译器会告诉我的:
    void main()
    {
    char a[94] =  "\x00\x10\x67\x00\xB1\x86\x0D\x0E\x0A\x0D\x00\x00\x08\x00\x45\x00"
      "\x00\x50\x00\xF2\x00\x00\x40\x06\xF8\x60\xC0\xA8\x00\x02\xC0\xA8"
      "\x00\x03\x00\x63\x00\x50\x01\x01\x01\x01\x02\x02\x02\x02\xA0\x02"
      "\x7F\xFF\xB6\xF4\x00\x0A\x03\x03\x0A\x01\x02\x04\x01\x09\x08\x0A"
      "\x3F\x3F\x3F\x3F\x00\x00\x00\x00\x00\x00\x30\x31\x32\x33\x34\x35"
      "\x36\x37\x38\x39\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x55";
    }
    --------------------Configuration: b - Win32 Debug--------------------
    Compiling...
    b.c
    E:\My Document\网络安全开发包详解——作业\WinPcap\sendpacket\Debug\b.c(8) : warning C4045: '' : array bounds overflow
    Linking...b.exe - 0 error(s), 1 warning(s)
      

  5.   

    我的理解是:你定义了数组大小为95,但是字符串系统会自动加一个结束符\0;实际字符串大小为96;你可以用sizeof来看数组大小,所以94要改为96;另一种方法就是如3楼说的直接char a[]=......;