标识符“snprintf”未定义

时间:2013-04-24 08:21:40

标签: c hp-ux acc

我正在尝试使用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的库。 任何解决这个问题的想法都是plz? 在此先感谢所有

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

HPUX C编译器的第6版符合C99标准,但您可能需要使用开关来启用它。

6.20发行说明声明下一个版本应该将默认模式从C89切换到C90,并且您运行的是6.26。它似乎确实发生在6.25,即6.20之后的发布。

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

要检查的其他一些事项:

  • 看看您是否已加入stdio.h标题。
  • 看看你是否只是printf遇到类似的问题,该问题也在该标题中。
  • 运行编译器生成预处理器输出(cc -E)并检查它是否已在某处定义。