程序使用TCHAR类型和TEXT宏将L附加到变量名



我正在尝试获取Program Files路径,将其附加另一个路径,然后运行它。

TCHAR programsdir[MAX_PATH];
SHGetFolderPath(NULL,CSIDL_PROGRAM_FILESX86,NULL,NULL,programsdir);
PathAppend(programsdir, TEXT("\bin\program.exe"));
LPCSTR pokerpath = TEXT(programsdir);
WinExec(pokerpath ,SW_SHOW);
return pokerpath;

在尝试运行上述程序时得到此错误消息:

error C2065: 'Lprogramsdir' : undeclared identifier

TEXT是一个宏,当您使用unicode进行编译时,它应该是L,而不是其他宏。

因此,在您的情况下,TEXT(programsdir)变为Lprogramsdir。这就是为什么你会有这个错误。

当您使用unicode字符串时,您必须像在L"My string content" 中那样,在它们的声明前面加上L

通过编写TEXT("My string content"),您可以确保在使用unicode时它变为L"My string content",否则它变为"My string content"。此宏允许您使用不同的编码,而无需修改原始字符串。

它不用于复制或强制转换,如果你想这样做的话。

TCHARchartypedef

CCD_ 12是针对CCD_ 14的CCD_。

不需要调用TEXT宏(它会在变量名后面附加一个L,显然是每个@olchauvin)。

您应该使用strcpy(pokerpath, programsdir);

或者仅仅返回CCD_ 18。它无论如何都会衰变为char *

我不知道你是否在使用UNICODE,所以你可能需要使用一个特殊的UNICODE函数来复制字符串。否则,只需返回即可。

相关内容

  • 没有找到相关文章

最新更新