如何解决'sprintf'的冲突类型?

时间:2012-10-22 10:45:39

标签: c++ objective-c osx-lion xcode4.5 stdio

我在项目中使用 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) */

1 个答案:

答案 0 :(得分:2)

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

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

如果您发布特定代码,我们可以提供更具体的建议。