TCHARと_TCHAR – プログラミング – Home

通知
すべてクリア

[解決済] TCHARと_TCHAR


真下
 真下
(@真下)
ゲスト
結合: 20年前
投稿: 4
Topic starter  

TCHARと_TCAHRはどっちが正しいのですか?
両方正しいなら使い分けはどうしますか?
両方のコードを見かけたので疑問に思い
質問させていただきました。


引用未解決
トピックタグ
tib
 tib
(@tib)
ゲスト
結合: 22年前
投稿: 468

返信引用
真下
 真下
(@真下)
ゲスト
結合: 20年前
投稿: 4
Topic starter  

ヘルプは見ましたが、
違いがわかりません。


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

>TCHARと_TCAHRはどっちが正しいのですか?
後者はどう見ても正しくありませんが...

簡単に調べた範囲では正確なことはわかりませんでした。
正式な違いを調べるには Microsoft に直接問い合わせるしかないと思います。

tchar.h を読む限りにおいてある種の妄想を行うことは可能ですが、
それが正しい保証などどこにも無いわけで。


返信引用
真下
 真下
(@真下)
ゲスト
結合: 20年前
投稿: 4
Topic starter  

適当に選ぶことにします。
ありがとうございました。


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

えぇー!? 適当でイイの?

tchar.h の中を見るに以下のことがわかります。
・_TCHAR と TCHAR は同一の typedef となる(同等品ということ)
・__STDC__ 配下では TCHAR は定義されない (-Za オプション指定時)
 _TCHAR のほうは定義される

これに名前付け規約 (_ で開始される名前は処理系固有の機能とする) をくっつけると

_TCHAR は Microsoft VC++ 固有の型として定義される
TCHAR は (Microsoft VC++ 固有の型ではあるが) 標準の型のひとつとして扱われている
と妄想することが出来ます。

VC++ 固有の機能であることを強く主張したいなら _TCHAR を使えばいい
Windows 標準機能であることを強く主張したいなら TCHAR を使えばいい
のではないでしょうか。

VC++6 標準のヘッダおよび MFC4.2 のソースを検索してみました。
MFC では TCHAR が使われています。_TCHAR は一切使われていません。
SDK はほとんど全て TCHAR を使っています。(ごく一部に _TCHAR)

PSDK 2003/Feb では _TCHAR はすべて排除され TCHAR に置き換わっています。

# ってことは -Za を指定すると Win32 GUI 系アプリはコンパイルできないのか...


返信引用
名無し
 名無し
(@名無し)
ゲスト
結合: 20年前
投稿: 15
 

以下、妄想。

STDCというくらいだから、標準C系(ランタイムライブラリ)で_TCHARを、
それ以外でTCHARを使うような気がする。


返信引用
真下
 真下
(@真下)
ゲスト
結合: 20年前
投稿: 4
Topic starter  

なんだかわからなくなってきました。

tetrapod様は
_TCHAR:Microsoft VC++ 固有の型として定義される
TCHAR:(Microsoft VC++ 固有の型ではあるが) 標準の型のひとつとして扱われている

名無し様は
_TCHAR:標準C系(ランタイムライブラリ)
TCHAR:それ以外で

逆のこと言ってるみたいですが違うのでしょうか?
まあ、VCで使うからどっちでもいいきがするので
適当に決めます。

情報ありがとうございました。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

> # ってことは -Za を指定すると Win32 GUI 系アプリはコンパイルできないのか...

やってみればわかりますが、できません。
TCHAR に起因した話ではなく、wingui.h で無名構造体を使いまくってたり、えとせとら。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

> まあ、VCで使うからどっちでもいいきがするので
> 適当に決めます。

断固適当に決めると硬い意志を決められてしまったのならば、もう言うことはありませんが…
どちらでもいいとお考えならば、TCHAR をおすすめします。
_TCHAR なんて聞いたことありませんでしたし。

で、標準 C++ にこだわるのであれば、そもそも TCHAR なぞ使わずに、char か wchar_t を使
っておくが吉ではないでしょうか。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました