编译错误C3163:_vsprintf的属性声明不兼容
问题
在昨天用
VS2008
和最新的
V7.1SDK
编译程序的
ZLIB
时候,出现了一个错误:
38> C:\Program Files\Microsoft Visual
Studio 9.0\VC\include\stdio.h(358) : error C3163: '_vsnprintf': attributes
inconsistent with previous declaration
38> C:\Program Files\Microsoft
Visual Studio 9.0\VC\include\stdio.h(350) : see declaration of '_vsnprintf'
看了一下,粗看之下,感觉到很奇怪,这可是
VC
自己的头文件的定义,难道还有错误,在发布的时候都没有发现吗?转念一想,编译别的程序的时候也用到了这个文件,怎么没有报错呢?这其中有什么古怪?
解决办法
在
Gooogle
上用“
error C3163: '_vsnprintf':
attributes inconsistent with previous declaration
”作为关键词搜索了一下,很快找到了这个网址:
http://hi.baidu.com/johnllon/blog/item/8b22a5074a8d06ce7b8947e0.html
,描述了与我遇到的相同的问题,作者遇到了这个问题后已经解决了,原因是:
在使用
vsnprintf
这个函数的
cpp
文件中,包含了
# define vsnprintf
_vsnprintf
的定义。在以前版本的
vc
中,没有定义
vsnprintf
,只定义
_vsnprintf
。而在
2008
版本中,添加了
vsnprintf
的定义。因此在编译的时候导致出现了上述错误。
解决的办法是针对
vc2008
前的
vc
定义宏:
#if (_MSC_VER < 1500)
#define vsnprintf _vsnprintf
#endif
分享到:
相关推荐
在Linux系统中,`printf`函数是C语言标准库中的一个关键组成部分,它用于格式化输出数据到标准输出设备,如终端。`printf`函数基于`vsprintf`函数,后者是一个更为底层的版本,用于将格式化的字符串写入指定的缓冲区...
sprintf 和 vsprintf 越界问题 sprintf 和 vsprintf 是两种常用的字符串格式化函数,但是它们也存在越界问题。如果参数太长,可能会导致越界,严重的会导致单板异常复位或其他单板运行异常。 一、sprintf 越界问题...
本主题将详细探讨`string.c`、`printf.c`和`vsprintf.c`这三个文件所代表的C标准库函数。 `string.c`文件通常包含了C语言标准库中的字符串处理函数。这些函数对于处理和操作字符数组至关重要。以下是一些关键的字符...
- **格式化字符串**:正确使用格式化字符串,避免格式不匹配导致的错误。 - **资源管理**:正确使用 `va_start()` 和 `va_end()` 宏,确保资源得到妥善管理。 #### 六、总结 `vsprintf()` 函数提供了强大的字符串...
`vsprintf` 是 C 语言标准库中的一个函数,用于将格式化的字符串写入一个字符数组中。与 `printf` 和 `sprintf` 相比,`vsprintf` 提供了更多的灵活性,尤其是在处理可变参数列表时。 #### 函数原型 ```c int ...
在STM8的嵌入式开发过程中,我们可能会遇到使用C标准库函数`vsprintf`时出现编译错误的问题。这个问题通常涉及到编译器兼容性、库版本差异或头文件不匹配等因素。标题提到的"STM8 COSMIC 头文件stdarg调用vsprintf...
`vsprintf`函数是C语言中的一个标准库函数,它属于`stdio.h`头文件,主要功能是将格式化的字符串输出到一个字符数组(字符串)中,而不是像`printf`那样输出到标准输出设备(通常是显示器)。这个函数的名字由...
vsprintf源代码.txt#资源达人分享计划#
在C语言中,合成字符串通常涉及使用`printf`系列函数,但这些函数并不直接支持动态地根据可变参数创建字符串。然而,通过使用`stdarg.h`库中的宏和函数,我们可以实现这样的功能。本篇文章将深入讲解如何用C语言根据...
* 错误报告:使用 Uart_Printf() 函数可以将错误信息发送到串口,方便开发者排查错误。 Uart_Printf() 函数是 ARM 串口驱动中的一种重要函数,提供了一种方便的方式来将格式化字符串发送到串口。
2. **vsprintf函数**:`vsprintf`是C标准库中的一个函数,原型为`int vsprintf(char * restrict s, const char * restrict format, va_list ap)`。它接受一个格式化字符串`format`,一个可变参数列表`ap`,以及一个...
标题提到的问题是“自己写的printf不能输出float型的数据”,这通常意味着用户尝试实现了一个自己的`printf`函数,但该函数不支持浮点数(float)的输出。 在C语言中,`printf`函数的灵活性来自于其格式化字符串,...
- 同样,这部分内容未给出具体的属性说明,但通常这类属性会涉及到函数的输入输出特性、兼容性问题或是错误处理机制等。 #### 2. 编程接口 接下来的章节重点介绍了一系列实用的编程接口,这些接口可以帮助开发者更...
vsprintf 新唐单片机测试 log 添加 可以通过宏定义,设置是否打印程序中的log调试信息。 但是加上vsprintf之后,编译出来的二进制文件的大小会变大。 谁知道更好的方法,可以告诉我。
### C语言中的可变参数用法详解 在C语言中,可变参数函数是指那些能够接受不定数量参数的函数。这种特性在很多场合下都非常有用,尤其是在日志记录、错误处理以及网络通信等场景中。本文将通过一个具体的示例来深入...
C标准库源代码,能提高对C的理解,不错的哦 下载文件列表 Pack : clibsource.rar C 标准库源代码\ABORT.C C标准库源代码\ABS.C C标准库源代码\ACCESS.C C标准库源代码\ADJUSTFD.C C标准库源代码\ALGRITHM C标准库源...
### C语言库函数归纳 #### 1. vsscanf() - **定义**: `#include <stdio.h>` - **函数原型**: `int vsscanf(const char *str, const char *format, va_list ap);` - **功能描述**: `vsscanf()` 函数用于根据指定的...