我正在尝试获取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"。此宏允许您使用不同的编码,而无需修改原始字符串。
它不用于复制或强制转换,如果你想这样做的话。
TCHAR
是char
的typedef
。
CCD_ 12是针对CCD_ 14的CCD_。
不需要调用TEXT
宏(它会在变量名后面附加一个L
,显然是每个@olchauvin)。
您应该使用strcpy(pokerpath, programsdir);
或者仅仅返回CCD_ 18。它无论如何都会衰变为char *
。
我不知道你是否在使用UNICODE,所以你可能需要使用一个特殊的UNICODE函数来复制字符串。否则,只需返回即可。