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.20 の次のリリースである 6.25 で発生したようです。

を使用して(または現在は C99 がデフォルトになっているため) C99 モードを強制て、それが役立つかどうかを確認できます。デフォルトのCコンパイル モードが C99 であっても、C++ ではなく C を指定する必要がある場合があります。cc -AC99cc -Ae

その他の確認事項:

  • stdio.hヘッダーが含まれているかどうかを確認してください。
  • printfそのヘッダーにもあるだけで同様の問題が発生するかどうかを確認してください。
  • プリプロセッサ出力 ( cc -E) を生成するコンパイラを実行し、それがどこかに定義されていることを確認します。
于 2013-04-24T08:36:32.400 に答える