此代码:
#include <tchar.h>
TCHAR example_function() {
TCHAR example_tchar[10];
return example_tchar;
}
int main() { }
给出错误:
In function 'TCHAR example_function()':
error: invalid conversion from 'TCHAR* {aka char*}' to 'TCHAR {aka char}' [-fpermissive]
warning: address of local variable 'example_tchar' returned [enabled by default]
答案 0 :(得分:4)
您的变量example_tchar
不是TCHAR
,而是数组。
您实际想要实现的目标是什么?
如果您想返回一个TCHAR
:
TCHAR example_function() {
TCHAR example_tchar[10];
return example_tchar[0];
}
//or simply
TCHAR example_function() {
TCHAR example_tchar = _T('');
return example_tchar;
}
如果要返回数组,或者更确切地说是指针,则必须动态分配内存以防止未定义的行为:
TCHAR* example_function() {
TCHAR* example_tchar = new TCHAR[10];
return example_tchar;
}
答案 1 :(得分:1)
如果要返回TCHARs
的字符串,请使用更复杂的内容,例如std::basic_string<TCHAR>
(或使用指针,或只添加集TCHAR[10]
作为返回参数)。 TCHAR
只是一个基于构建选项在char和wchar_t之间进行选择的定义。