0

这段代码:

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

2 回答 2

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;
}
于 2012-06-05T13:53:52.840 回答
1

如果你想返回一个使用更复杂的字符串,例如(或使用指针,或者只是添加 set作为返回参数)。只是一个定义,它根据构建选项在 char 和 wchar_t 之间进行选择。TCHARsstd::basic_string<TCHAR>TCHAR[10]TCHAR

于 2012-06-05T13:57:32.793 回答