温文尔雅的大象 · C++ 序列化和反序列化-腾讯云开发者社区-腾讯云· 2 周前 · |
销魂的香菜 · 使用strncpy/strncat注意事项( ...· 1 周前 · |
温暖的凉面 · 谈谈snprintf-腾讯云开发者社区-腾讯云· 1 周前 · |
乖乖的电池 · 2024陆军招考文职人员理论考试成绩加分优待 ...· 1 周前 · |
坏坏的啤酒 · 记者观察:青少年热衷“买谷子”,他们到底在买 ...· 1 月前 · |
热情的硬币 · 中国燃料电池公共汽车商业化示范项目正式启动 ...· 3 月前 · |
威武的猴子 · 张磊(中国内地青年影视演员)_百度百科· 4 月前 · |
神勇威武的小蝌蚪 · 特斯拉一辆车净赚6.9万元,是丰田的 8 ...· 1 年前 · |
我试图将一个进程名作为TCHAR传递给下面的void:
void GetBaseAddressByName(DWORD pID, TCHAR *pN)
如下所示:
GetBaseAddressByName(aProcs[i], (TCHAR*)"Process.exe");
所以我的问题是:我所做的是正确的吗?因为我已经在多位和Unicode上用我的项目的字符集尝试了TEXT("Process.exe")和_T("Process.exe"),它只是告诉我
argument of type "const char*" is incompatible with parameter of type "TCHAR*"
发布于 2018-12-22 06:11:10
(TCHAR*)"Process.exe"
不是有效的类型转换。当项目字符集设置为ANSI/MBCS时,它将“工作”,但如果字符集设置为Unicode,它将产生垃圾。
使用
TEXT("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_cast
强制转换
const
),则不能传递指向非常量数据的指针。这就是为什么在尝试使用
TEXT()
/
_T()
宏时仍然收到错误的原因。
发布于 2018-12-22 05:39:06
简而言之,答案是否定的。TCHAR根据项目的Unicode/多字节设置映射到
char
或
wchar_t
。因此,通常情况下,这样的强制转换要么是不必要的,要么是不正确的。正如您所说,正确的方法是使用
TEXT
或
_T
宏。出现错误的原因是您试图将一个
const
字符串传递给一个需要可变字符串的函数。避免此错误的安全方法是将常量字符串复制到本地
TCHAR
缓冲区中,然后将其传递给
GetBaseAddressByName
。
发布于 2018-12-22 04:23:29
最好先有一个TCHAR数组,然后再复制到其中。
#include "atlstr.h"
char const * procName = "processName.exe";
TCHAR szName [128];
_tcscpy(szName, A2T(procName));
GetBaseAddressByName(aProcs[i], szName);
正如@Remy Lebeau在评论中所建议的那样,可以将
procName
定义为
TCHAR const * procName = TEXT("processName.exe");
。
https://stackoverflow.com/questions/53890359
复制相似问题
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
温文尔雅的大象 · C++ 序列化和反序列化-腾讯云开发者社区-腾讯云 2 周前 |
温暖的凉面 · 谈谈snprintf-腾讯云开发者社区-腾讯云 1 周前 |
威武的猴子 · 张磊(中国内地青年影视演员)_百度百科 4 月前 |