wcscpyという関数のこと(’14/9)
Cの文字列に関することに興味を抱いています。
昔のBASICは数値をそのまま扱えたのですが、Cは文字列が基本なんですね。それで、
実に多くの関連する関数があるようです。しかしながら、やにこいのは、UNICODEと、
ANSIの関係。既に述べましたが、どうやらVisualStudioは2005.NETからUNICODEを標準
にしたそうで、私のようにデフォルト設定のままの輩の場合、UNICODE対応のワイド文
字系関数しかNGになってしまいます。
個人で自分のPC内だけで遊んでいる私の場合はそう割り切れば問題はなく、わざわざ
TEXTマクロ使わず、L" "で済むのですけどね。これも既に書いたように、_Tマクロも
tchar.hをincludeしないと使えないし。
しかしながら、一つ「ありゃりゃ」という事態に遭遇してしまいました。
何が悪いのか・・・UNICODE対応というwcscpyを使ってみたら、なんとコンパイルエラー
しっかり赤丸地に白バッテン。ランタイムエラーじゃないんです。
で、説明はwcscpy_sを使えって・・・キョロキョロ(*_*;
というのは、ネット記事でこのwcscpyとwcscpy_sの話題を目にしていたからです。
そこにはエラーではないが『警告』が出ると。wcscpyはCの標準関数なのに、非標準で
Microsoft専用関数のwcscpy_sを推奨して警告出すなんてという話でした。
しかし、今回私が体験したのは「コンパイルエラー」表示。
そして前述のように「wcscpy_sを推奨」と。
To dissable deprecation, use _CRT_SECURE_NO_WARNINGS
と言われてもねぇ・・・って、これって"WARNINGS"なんですよね。
"ERROR"ではないはずです。
ちなみにwcscpy_sに変えたら問題なくコンパイルしてちゃんと動きましたので他の問題
はないはずです(なんせ、テスト的にwcscpyを使ってみようという最小限のプログラム
ですから)。
戻る