在 MS Visual Studio 2005 中开发 PHP扩展时可能会遇到“不能分配常量大小为 0 的数组” 的编译错误:
======================================
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\sys/stat.inl(44) : error C2466: 不能分配常量大小为 0 的数组
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\sys/stat.inl(49) : error C2466: 不能分配常量大小为 0 的数组
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\sys/utime.inl(39) : error C2466: 不能分配常量大小为 0 的数组
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\sys/utime.inl(44) : error C2466: 不能分配常量大小为 0 的数组
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\sys/utime.inl(49) : error C2466: 不能分配常量大小为 0 的数组
1>C:\Program Files\Microsoft Visual Studio 8\VC\include\sys/utime.inl(78) : error C2466: 不能分配常量大小为 0 的数组
======================================
我的解决的办法是:
在vc的 c:\program files\microsoft visual studio 8\vc\include\malloc.h 文件中找到:
#define _STATIC_ASSERT(expr) typedef char __static_assert_t[ (expr) ]
将这一行改为:
#ifdef PHP_WIN32
#define _STATIC_ASSERT(expr) typedef char __static_assert_t[ (expr)?(expr):1 ]
#else
#define _STATIC_ASSERT(expr) typedef char __static_assert_t[ (expr) ]
#endif