前几天用C做了个函数库给程序部,程序部那边把库里的所有声明原封不动转为Delphi的语法以便在Delphi中调用,结果老是莫名其妙出问题,后来把他们的程序拿过来调试,才发现是枚举惹的祸···
原来在Delphi中枚举类型的大小为一个字节,而32位系统下C中的枚举类型通常为4四个字节。当Delphi调用C的函数时,那些枚举类型的参数只有一个字节是正确的值,其它三个字节为错误数据,这样将导致函数参数经常不正确。后来在Delphi中全部把枚举类型的函数改为Integer类型才解决问题,看来用C编写函数库要小心使用枚举···
Delphi和C的枚举兼容问题
最新推荐文章于 2024-05-31 14:20:05 发布
本文讨论了在跨语言编程中遇到的问题,特别是从C到Delphi移植时,由于枚举类型大小不同导致的错误。在32位系统下,C中的枚举类型通常为4个字节,而在Delphi中仅为1个字节,这可能导致函数参数传递不正确。文章最终通过将Delphi中的枚举类型改为Integer类型解决了该问题。
881

被折叠的 条评论
为什么被折叠?



