如何从函数中正确输出TCHAR?

时间:2012-06-05 13:52:29

标签: c++ tchar

此代码:

#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]

2 个答案:

答案 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之间进行选择的定义。