`

处理“error C2466: 不能分配常量大小为0 的数组”

 
阅读更多

用C/C++写PHP的扩展模块,如果VS2005编译,可能会出现下面的错误:

<VS2005安装目录>\VC\include\sys/stat.inl(44) : error C2466: 不能分配常量大小为 0 的数组

 

,出现这种情况时,只需在 <VS2005安装目录>\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

 就可以了。 

分享到:
评论

相关推荐

    Windows 下使用Visual Studio 2013编译国密算法库GMSSL

    - **错误示例二**:`crypto\base58\base58.c(81):error C2466: 不能分配常量大小为0的数组` - **错误示例三**:`crypto\base58\base58.c(81):error C2133: “outi”: 未知的大小` 这些问题主要是由于Visual Studio ...

    c99-variable-length-array.rar_ARGUMENT!

    总的来说,C99的可变长度数组特性虽然为C语言带来了一定的灵活性,但它并不适用于C++环境,尤其是涉及到模板时。在C++中,应优先考虑使用STL容器,如`std::vector`,它们提供了更强大、更安全的动态数据结构管理。...

    C语言: 顺序存储结构线性表基本操作 纯C语言实现

    - `LiST_iNiT_SiZE`: 初始分配的数组大小,定义为`5`。 - `LiSTiNCREMENT`: 数组扩展时增加的大小,定义为`1`。 ### 三、基本操作实现 #### 1. 初始化线性表 `initList()` - 功能:初始化一个空的线性表。 - 实现...

    C语言错误信息中文解释

    **解决方法**:减小数组大小,或考虑使用动态分配内存的方法。 ### 8. Assembler statement too long 错误信息:“汇编语句过长” **解释**:汇编语句超过了C语言编译器支持的最大长度(通常为480个字符)。 **...

    C语言测试:想成为嵌入式程序员应知道的16个基本问题

    - 面试过程中的C语言测试不仅考察技术知识,还观察应聘者面对难题的态度和解决问题的能力,如是否能够合理推断、逻辑清晰地解释答案,以及面对不熟悉问题时的反应。 5. **嵌入式系统编程特点** - 嵌入式系统的...

    c语言错误查询表--学c必备品(收藏版)[文].pdf

    5. **Array size too large**:数组大小超过编译器允许的最大值,需减小数组尺寸或使用动态内存分配。 6. **Bad character in parameters**:参数中不应包含非法字符,如空格、特殊符号等,确保字符串引号内的字符...

    c语言编译报错大全(中英文对照)

    **中文描述**:不能修改常量对象 **解释**:尝试修改被声明为 `const` 的变量或对象。 **解决方案**: - 确认变量是否确实需要修改。 - 如果不需要修改,则将其声明为 `const`。 - 如果需要修改,考虑使用非 `...

    C语言错误解释和总结

    - **Object of type 'xxx' cannot be freed**: 类型为“xxx”的对象不能被释放,可能是因为对象类型不支持动态分配或释放。 - **Parameter type not compatible**: 参数类型不兼容,可能是因为函数调用中的参数类型...

    《你必须知道的495个C语言问题》

    1.24 我在一个文件中定义了一个extern数组,然后在另一个文件中使用,为什么sizeof取不到数组的大小? 13 声明问题 14 1.25 函数只定义了一次,调用了一次,但编译器提示非法重声明了。 14 *1.26 main的正确...

    你必须知道的495个C语言问题

    6.21 当数组是函数的参数时,为什么sizeof不能正确报告数组的大小? 6.22 如何在一个文件中判断声明为extern的数组的大小(例如,数组定义和大小在另一个文件中)?sizeof操作符似乎不行。 6.23 sizeof返回的大小...

    C语言错误种类总结.pdf

    16. Cannot modify a const object(不能修改一个长量对象):对定义为常量的对象进行不合法操作(如常量赋值)引起本错误。 处理方法:检查常量对象的操作是否合法。 17. Case outside of switch(Case出现于...

    c语言中常见的错误

    **问题描述**:在`main`函数中定义数组时,要求使用常量表达式作为数组的大小。 **解决方案**: - 确保数组大小是一个已知的常量表达式,例如整型常量或预定义宏。 - 不要使用变量或计算结果作为数组的大小。 #### ...

    C语言报错中文翻译.txt

    - 考虑使用动态内存分配来替代静态数组,以满足更大的存储需求。 4. **bad filename format in included directiveณาָеļʽȷ** - 错误解释:在包含指令(`#include`)中使用的文件名格式不正确。 - 解决方法...

    C语言编译软件常用英语词汇[参考].pdf

    12. **Constant**:常量是不可改变的值,可以在程序中多次使用但不能被修改。 13. **Syntax**:语法是编程语言的规则,规定了程序的结构和书写方式。 14. **Argument**:在函数调用中,参数是传递给函数的实际值,...

    常见C语言错误提示信息

    #### Cannot modify a const object (不能修改常量对象) **描述**: 尝试修改一个声明为`const`的变量或对象。 **解决方法**: 确保不修改常量对象,或者取消`const`属性后再进行修改。 #### Case outside of ...

    C语言:顺序表

    它分配初始大小为`LIST_INIT_SIZE`的内存空间,并将`ListLength`设置为0,表示列表为空。如果内存分配失败,则程序会因溢出而退出。 #### 插入元素 `ListInsert_Sq`函数在顺序表的指定位置插入一个新元素。首先...

Global site tag (gtag.js) - Google Analytics