`

处理“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个字符)。 **...

    ATM机模拟器VC++编译错误总结

    零大小数组即数组长度为0,这样的数组在C++标准中是非法的。 **原因分析**:引发该错误的主要原因是程序员在定义或使用数组时没有正确指定数组的大小,或者由于某些逻辑错误导致数组尺寸被误设置为0。 **解决方案*...

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

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

    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的正确...

    C语言错误种类总结.pdf

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

    c语言中常见的错误

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

    常见C语言错误提示信息

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

    C语言教程——学习C语言最实用、简短的教程了

    - **1.3.4 C语言的关键字**:C语言有三十多个关键字,它们具有特殊的意义,不能作为标识符使用。例如`int`、`void`、`return`等。 **1.4、算法** - **1.4.1 流程图与算法的结构化描述**:流程图是一种图形表示方法...

    C语言报错中文翻译.txt

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

    C语言程序设计(PDF格式)

    1.3.3 开发一个C程序 7 1.3.4 C语言的关键字 7 1.4 算法 8 1.4.1 流程图与算法的结构化描述 9 1.4.2 用N-S图描述算法 12 1.4.3 用PAD图描述算法 13 第2章 数据类型、运算符和表达式 14 2.1 C语言的数据类型 14 2.2 ...

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

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

Global site tag (gtag.js) - Google Analytics