关于从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)
......
特向各位高手请教,万分感谢!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
头两行已经给你说得很清楚了,修改源代码!
谢谢回复,关键是对应的头文件如何替换,应该有与varargs.h相匹配的h文件吧?
关注!!
Revise your code to use <stdarg.h>
可能在ansidecl.h中
变参引起的,linux不支持老式的变参
void fn(va_alist)
va_dcl
的定义方式,我也遇到过同样的问题,没有找到好的解决方法,可能跟gcc的版本有关系,我当时是把变参修改成标准C的定义模式
void fu(char *fmt,....)
[ 本帖最后由 cromay 于 2006-10-9 10:31 编辑 ]
#include <varargs.h> 修改为
#include <stdarg.h>