这显然是为16位实模式x86代码编写的,其中需要huge才能有大于64 KB的数组。参见What are near, far and huge pointers?和人们使用什么约定和语言扩展来编写8086和80286? 如果幸运的话,这是代码中唯一特定于x86-16的部分,否则它是可移植的标准C。在这种情况下,您只需删除huge关键字的所有示例,或者在每个源文件的顶部插入#define huge /* nothing */。在32位或64位编译器中没有这样的64 KB限制。可以类似地处理near和far。 如果你运气不好,那么代码可能包含很多其他的示例,比如不可移植的x86-16特定代码,你将有一个漫长的移植项目等着你,这可能包括huge这样的示例,它们是公开的(程序无法编译),或者更微妙的(程序编译但不能正确运行,或者包含难以发现的bug)。
1条答案
按热度按时间yptwkmov1#
这显然是为16位实模式x86代码编写的,其中需要
huge
才能有大于64 KB的数组。参见What are near, far and huge pointers?和人们使用什么约定和语言扩展来编写8086和80286?如果幸运的话,这是代码中唯一特定于x86-16的部分,否则它是可移植的标准C。在这种情况下,您只需删除
huge
关键字的所有示例,或者在每个源文件的顶部插入#define huge /* nothing */
。在32位或64位编译器中没有这样的64 KB限制。可以类似地处理near
和far
。如果你运气不好,那么代码可能包含很多其他的示例,比如不可移植的x86-16特定代码,你将有一个漫长的移植项目等着你,这可能包括
huge
这样的示例,它们是公开的(程序无法编译),或者更微妙的(程序编译但不能正确运行,或者包含难以发现的bug)。