关于从SCO UNIX移植C程序到SUSE LINUX的问题

小雨飞
关于从SCO UNIX移植C程序到SUSE LINUX的问题

前些日子,我将我原来在SCO UNIX下下好的程序移植到SUSE LINUX10,在编译时提示一些头文件没有,经过查找也没有找到(开发资源包已经安装了的)。make时出现的问题如下:
......
/usr/lib/gcc-lib/i586-suse-linux/3.3.1/include/varargs.h:4:2: #error  "GCC no longer implements <varargs.h>."

/usr/lib/gcc-lib/i586-suse-linux/3.3.1/include/varargs.h:5:2: #error  "Revise your code to use <stdarg.h>."

lib_tparm.c:131: error: parse error before "va_dcl"

lib_tparm.c:132: error: syntax error before '{' token

lib_tparm.c:146: warning: parameter names (without types) in function declaration

lib_tparm.c:146: warning: data definition has no type or storage class

lib_tparm.c:147: error: conflicting types for `string'

lib_tparm.c:134: error: previous declaration of `string'

lib_tparm.c:147: error: `parms' undeclared here (not in a function)
......
特向各位高手请教,万分感谢!!

ecloud
头两行已经给你说得很清楚了,修改源代码!

小雨飞
谢谢回复,关键是对应的头文件如何替换,应该有与varargs.h相匹配的h文件吧?

cnredcat
关注!!

lenovo
[quote]原帖由 [i]小雨飞[/i] 于 2005-12-7 10:00 发表
谢谢回复,关键是对应的头文件如何替换,应该有与varargs.h相匹配的h文件吧? [/quote]
Revise your code to use <stdarg.h>

zongyaotang
回复 1楼 小雨飞 的帖子

可能在ansidecl.h中

cromay
变参引起的,linux不支持老式的变参
void fn(va_alist)
va_dcl
的定义方式,我也遇到过同样的问题,没有找到好的解决方法,可能跟gcc的版本有关系,我当时是把变参修改成标准C的定义模式
void fu(char *fmt,....)

[[i] 本帖最后由 cromay 于 2006-10-9 10:31 编辑 [/i]]

weinv
我也在做sco移植到suse的,遇到这个问题,已经解决

#include <varargs.h> 修改为
#include <stdarg.h>