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

また、たとえば、useの文字列TCHARsより複雑なもので返したい場合std::basic_string<TCHAR>(またはポインタを使用するかTCHAR[10]、returnパラメータとしてsetを追加するだけです)。TCHARビルドオプションに基づいてcharとwchar_tのどちらかを選択する単なる定義です。

于 2012-06-05T13:57:32.793 に答える