0

プロジェクトでstdio.hファイルを使用しています。

私が使用したXcodeからのコンパイル時

 Comipler for C/C++/Objective-C: LLVM GCC 4.2

コンパイル時に「sprintf」エラーの競合するタイプが発生します。これはMacOS10.6.8およびXcode3.2.3では正常に機能しますが、Mac OS10.7.4およびXcode4.5ではエラーが発生しますか?私を助けてください?

これはMacOSX10.7.4のコードです

 __BEGIN_DECLS
 int     fseeko(FILE *, off_t, int);
 off_t   ftello(FILE *);
 __END_DECLS
#endif /* __DARWIN_C_LEVEL >= 200112L */

#if __DARWIN_C_LEVEL >= 200112L || defined(_C99_SOURCE) || defined(__cplusplus)
__BEGIN_DECLS
 int     snprintf(char * __restrict, size_t, const char * __restrict, ...) __printflike(3,   4);
 int     vfscanf(FILE * __restrict, const char * __restrict, va_list) __scanflike(2, 0);
int  vscanf(const char * __restrict, va_list) __scanflike(1, 0);
int  vsnprintf(char * __restrict, size_t, const char * __restrict, va_list) __printflike(3, 0);
int  vsscanf(const char * __restrict, const char * __restrict, va_list) __scanflike(2, 0);
__END_DECLS
#endif /* __DARWIN_C_LEVEL >= 200112L || defined(_C99_SOURCE) || defined(__cplusplus) */
4

1 に答える 1

2

フォーマットパターンと、sprintfおよび同様の関数の引数が一致するかどうかのチェックが、XCode 4.4のコンパイラに最近追加されました(私が間違っていない場合)。これは、以前のバージョンでは見過ごされていたコードの問題を浮き彫りにする貴重なチェックです。

私の場合、コンパイラは常に正しいものでした。したがって、フォーマットパターンを修正するか、対応する引数を変換する方が適切です。

特定のコードを投稿すると、より具体的なアドバイスを提供できます。

于 2012-10-22T10:57:53.150 に答える