【发布时间】:2012-01-09 09:35:49
【问题描述】:
我正在尝试在 Visual Studio 2010 中编译,这是我得到的确切错误:
Error 65 error C2440: 'function' :
cannot convert from 'double' to 'const wchar_t *'
违规行是:
swprintf(subbuf[num], L"%f\0", va_arg(args, double));
这应该可以干净地编译,因此不建议更改代码。 我是否缺少任何可能解决此问题的编译器选项?
编辑:
这里是subbuf的声明:
#define GDB_CHAR wchar_t
GDB_CHAR subbuf[MAX_SUBS][STATUS_MSG_LEN+1] ;
另外,关于 size 参数,我还检查了文档页面,但是,编译器 不会在
上引发错误swprintf(subbuf[num], L"%c\0", va_arg(args, int));
所以从int 转换为wchar_t * 没有问题,并且函数的参数没问题。
如果这仍然不够信息,请发表评论并将我引导到你们需要的任何其他人。 谢谢
【问题讨论】:
-
subbuf是什么类型? (此外,如果这是 C 代码,则应删除 C++ 标记,反之亦然。) -
这不可能编译,你使用了未声明的标识符。在您发布有用的代码 sn-p 之前,您不能期望得到有用的答案。
-
@Deepak:Potatoswatter 的回答是对的。毫不奇怪,您的编译器让您将
int隐式转换为指针(您可能应该选择更高的警告级别),但它不能明智地将双精度数转换为指针。为什么不尝试使用正确的论点?
标签: c visual-studio wchar-t