3

我正在尝试使用 aCC 编译器 [HP C/aC++ B3910B A.06.26] 在 HP-UX 机器上编译控制台 C 应用程序。编译总是失败并出现以下错误:

******"Common/Common.c", line 153: error #2020: identifier "snprintf" is undefined
          snprintf( BufferMessage, MSG_SIZE,
          ^
1 error detected in the compilation of "Common/Common.c".
gmake: *****[Common/Common.o] Error 2********

然而,Common.C 文件已经包含通常包含方法 snprintf 的库。有什么想法可以解决这个问题吗?提前感谢大家

4

2 回答 2

4

snprintf()在 C99 中引入,并在 中定义<stdio.h>,因此您的编译器必须支持该版本的 C 标准。如果它不支持 C99,请sprintf()改用。

于 2013-04-24T08:24:49.230 回答
2

HPUX C 编译器的版本 6 与 C99 兼容,但您可能需要开关才能启用它。

6.20 版本说明指出,下一个版本应该将默认模式从 C89 切换到 C90,并且您正在运行 6.26。看来它确实发生在 6.25 中,这是 6.20 之后的版本。

您可以通过使用(或者现在 C99 是默认设置)来强制C99 模式,看看是否有帮助。可能的是,即使默认的C编译模式是 C99,您仍然必须指定它是 C 而不是 C++。cc -AC99cc -Ae

其他一些需要检查的事情:

  • 看看你是否包含了stdio.h标题。
  • 看看你是否遇到了与 just 类似的问题printf,它也在该标题中。
  • 运行生成预处理器输出 ( cc -E) 的编译器并检查它是否在某处定义。
于 2013-04-24T08:36:32.400 回答