-
Notifications
You must be signed in to change notification settings - Fork 167
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
#include <locale.h> 追加 #694
Conversation
vs2019 の導入はまだ先だと思ってました。 vc++の場合特に、ヘッダーには インクルードするファイルは、 |
#include <clocale> がいいという事でしょうか?どちらでも良いと思います。 |
Visual Studio 2017 で
というように locale.h が取り込まれてました。 標準ライブラリのパスが MinGWでビルドした場合でもどこかで勝手に #include していて問題が起きてなかったぽいですね。そちらはどこで #include されていたのかを調べる気は無いです。。 |
いいえ、です。 ぼくが言ってるのは #include <locale> 厳格な仕様では |
・・・なんか外れたこと書いてる気がします。
詳しいことは c++er の人にお任せするとして、ざっくりとそんな印象を受けてます。 |
https://en.cppreference.com/w/cpp/header/locale VS2019でビルドすると以下のようなエラーメッセージが出ます。
なお、
なお、 #include <locale> して、 std::locale という記述に変えないと頃す!と言われたらすぐに変えるのでお申し付けください。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
変更内容自体は問題ないと思います。
どうしてこうなった?ということと、
localeヘッダに移行すべきなんじゃ?という点は引き続き、気が向いたら考える、ということで。
VS2017環境については berryzplus さんも使っていると思うので、プロジェクトのプロパティの C/C++ の Advanced の Show Includes オプションを Yes (/showIncludes) に変えてビルドしたら Output ウィンドウに #include しているのが全部出るのでそれで実際に確認されると良いと思います。自分はしました。 |
ああ、ちなみに std::locale はtypoです。 |
beru さんの /showIncludes にヒントがあるのではないでしょうか。
何も確かめておらず、たぶんですけど。 (追記) 最初の最初に beru さんがもう書いていましたね。>「今まで無くても何で大丈夫だったのかは良く分かりません。どこかの標準ヘッダーで include してるんでしょうか。。」 |
Review ありがとうございます。Merge します。MinGWでどうして大丈夫だったのかの確認はMSFTがもっと嫌いになったら行おうと思います。 |
Issue作成前に原因調査を済ませてIssueの本文に明解な記述をしておかないと、レビューワーもトラブルシューティングの習慣で色々な想像をしてしまうという事ですね。お手数おかけしました。。 |
vs2019では iosbase がxlocaleをインクルードしてくれなくなったってことなんですかね。 |
VS2019で
というようになっていて。なお標準ライブラリのパスは
一般論でしか回答出来ませんが、何かの標準ヘッダファイルを include したら違うヘッダファイルも include されるかどうかは処理系依存かもしれないので(規格で決まっているものもあるかもしれませんがいちいち規格参照しながらプログラミングする人はあまりいないと思います)使用する関数やクラスのレファレンスを見て include が必要なヘッダを調べて明示的に書くようにするのが正しいやり方かと思います。面倒なのでよくさぼりがちですけど。 |
vs2019 preview1は結局いれてないので空想でものを言ってます。 一応、必要なヘッダはできるだけ書く派です。 |
#include <locale.h> 追加
[patchunicode:#694]で追加されたオプションをヘルプに追加する。
Visual Studio 2019 Preview で Debug Win32 でビルドするとエラーになるので追加しました。
今まで無くても何で大丈夫だったのかは良く分かりません。どこかの標準ヘッダーで include してるんでしょうか。。