【问题标题】:'function' : cannot convert from 'double' to 'wchar_t *''function' : 无法从 'double' 转换为 'wchar_t *'
【发布时间】: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


【解决方案1】:

快速浏览documentation 表明该函数需要一个指定输出字符串大小的参数,您已省略该参数。

【讨论】:

    猜你喜欢
    • 2017-02-03
    • 2010-11-03
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    相关资源
    最近更新 更多