2012-06-05 2 views
0

이 코드 :함수에서 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] 

답변

4

example_tcharTCHAR 변수 아니다 당신의,하지만 배열.

실제로 달성하려는 것은 무엇입니까?

반환 할 경우TCHAR 하나 :

: 당신이 배열, 또는 오히려 포인터를 반환 할 경우

TCHAR example_function() { 
    TCHAR example_tchar[10]; 
    return example_tchar[0]; 
} 
//or simply 
TCHAR example_function() { 
    TCHAR example_tchar = _T(''); 
    return example_tchar; 
} 

것은, 동적 정의되지 않은 동작을 방지하기 위해 메모리를 할당해야합니다 그냥 예 (또는 사용 포인터에 대한 std::basic_string<TCHAR>처럼, 더 복잡 문자열TCHARs 사용의 무언가를 돌아가거나 할 경우

TCHAR* example_function() { 
    TCHAR* example_tchar = new TCHAR[10]; 
    return example_tchar; 
} 
+0

그리고 사용 후 포인터를'[]'삭제하는 것을 잊지 마라! – Forgottn

+0

값으로 돌아 오지 않습니까? – silent

+1

@silent 예, 포인터는 값에 의해 반환됩니다. 그러나 잘못된 주소를 가리 킵니다. –

1

그리고설정 추가 할 반환 매개 변수로). TCHAR은 빌드 옵션에 따라 char와 wchar_t 중 하나를 선택하는 정의입니다.