少しWindowsAPI入るんですが質問です。

初めにコードを載せます。

TCHAR a[] = TEXT("Hello");
string str = a;

マルチバイトとユニコード両方に対応できるようにしたいのですが
上のコードはユニコードの時にワイド文字となってコンパイラに
はじかれてしまいます。

マルチバイトに変換すればいいのですがマルチバイトに設定した時に
今度は変換する過程でエラーが出ると思うので、
TCHARがワイド文字かマルチバイト文字か知る必要があります。

どのようにコードを書けばいいのですか