gpt4 book ai didi

c - 在 AIX 7 上编译 C 代码时出错

转载 作者:行者123 更新时间:2023-11-30 14:24:16 25 4
gpt4 key购买 nike

SO,我被要求在 AIX7(64 位)机器上编译一些遗留的 C 代码。

而且,我刚刚更改了 makefile 来编辑所使用的编译器(从 gcc 到 xlc_r),以及标志(从 -DAIX3 到 -DAIX7)。

但是,由于这个愚蠢的行为,我收到了一个提示的错误

    xlc_r -c -q64 -O -DAIX -DAIX7  log.c
"log.c", line 128.7: 1506-343 (S) Redeclaration of log_write differs from previous declaration on line 140 of "lib.h".
"log.c", line 128.7: 1506-378 (I) Prototype for function log_write cannot contain "..." when mixed with a nonprototype declaration.
"log.c", line 165.7: 1506-343 (S) Redeclaration of log_errno differs from previous declaration on line 141 of "lib.h".
"log.c", line 165.7: 1506-378 (I) Prototype for function log_errno cannot contain "..." when mixed with a nonprototype declaration.
make: 1254-004 The error code from the last command is 1.

问题的方法看起来像

  extern  void    log_write _PROTO(( int, char *, ... ));
extern void log_errno _PROTO(( int, char *, ... ));

我想知道...是什么,它是否构成一个开放的参数列表?我如何让它在 AIX7 上运行?

最佳答案

函数声明或定义中的省略号 (...) 表示该函数接受可变数量(零个或多个)参数。

在过去,通常需要使用 ANSI 之前的编译器和符合 ANSI 的编译器来编译代码,处理这两种 C 语言之间函数声明差异的常见方法是有条件地定义一个宏,通过更改宏定义,可以允许 ANSI 样式声明或 K&R 样式声明。我怀疑您的示例中使用的 _PROTO() 宏被定义为具有 K&R 样式声明,而不是带有原型(prototype)的 ANSI 样式声明,修复此问题可能会解决这些编译问题

关于c - 在 AIX 7 上编译 C 代码时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12011438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com