我使用Visual Studio 2013并收到以下错误:


  错误C2664:'DWORD Options(int,LPCTSTR *,LPCTSTR,...)':无法将参数2从'LPTSTR []'转换为'LPCTSTR *'54 1 ConsoleApplication3


这是代码:

DWORD Options(int argc, LPCTSTR argv[], LPCTSTR OptStr, ...){
    // Code
}
int _tmain(int argc, LPTSTR argv[]){
   iFirstFile = Options(argc, argv, _T("s"), &dashS, NULL);
   // Code
}


有谁知道如何修理它?
并解释为什么会发生此错误?

最佳答案

“并解释为什么会发生此错误?”

可以在here中找到此错误的原因:
隐式转换“ ...将让您无提示地无提示地修改const对象,而无需强制转换...”

“有谁知道如何修理它?”

LPCTSTR argv[]不是常量对象,而是常量字符串的数组。数组本身可以修改(argv[0] = 0;)。
由于上面链接中的建议是避免强制转换(“ ...请不要以指针方式围绕编译时错误消息...”),所以最简单的解决方案是更改Options的签名(注意添加的const):

DWORD Options(int argc, const LPCTSTR argv[], LPCTSTR OptStr, ...)

10-06 06:58