0

我在我的项目中使用stdio.h文件。

当我使用 Xcode 编译时

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

在编译时出现“sprintf”错误的冲突类型。这在 Mac OS 10.6.8 和 Xcode 3.2.3 中运行良好,但在 Mac OS 10.7.4 和 Xcode 4.5 中出现错误?请帮我?

这是 Mac OS X 10.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

XCode 4.4 的编译器最近添加了检查格式模式和参数是否sprintf匹配以及类似函数的功能(如果我没记错的话)。这是一项有价值的检查,可以突出代码中早期版本未注意到的问题。

就我而言,编译器总是正确的。所以你最好修复格式模式或转换相应的参数。

如果您发布具体代码,我们可以给您更具体的建议。

于 2012-10-22T10:57:53.150 回答