我正在尝试将进程名称作为 TCHAR 传递给以下无效:
void GetBaseAddressByName(DWORD pID, TCHAR *pN)
通过这样做:
GetBaseAddressByName(aProcs[i], (TCHAR*)"Process.exe");
所以我的问题是:我在做什么正确吗?因为我已经在 Multi-Bite 和 Unicode 上使用我的项目字符集尝试了 TEXT("Process.exe") 和 _T("Process.exe") ,它只是告诉我
argument of type "const char*" is incompatible with parameter of type "TCHAR*"
(TCHAR*)"Process.exe"
不是有效的类型转换。当项目字符集设置为 ANSI/MBCS 时它会“工作”,但如果字符集设置为 Unicode,它将产生垃圾。
UsingTEXT("Process.exe")
是使字符串文字使用TCHAR
字符的正确方法。
GetBaseAddressByName(aProcs[i], TEXT("Process.exe"));
但是,您需要将pN
参数更改为const TCHAR *
(或LPCTSTR
):
void GetBaseAddressByName(DWORD pID, const TCHAR *pN);
void GetBaseAddressByName(DWORD pID, LPCTSTR pN);
字符串文字是常量数据,并且您不能在需要指向非常量数据的指针的情况下传递指向常量数据的指针(不使用const
丢弃const_cast
)。这就是为什么在尝试使用TEXT()
/_T()
宏时仍然会出错的原因。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句