Quantcast
Channel: イグトランスの頭の中
Browsing latest articles
Browse All 123 View Live

VC++でstd::get_timeがなんかダメ

Visual C++ 2015と2017 RCで、以下のプログラムが期待どおりに動きませんでした。 #include #include #include #include int main() { std::istringstream s("20170110"); std::tm x = {}; s >> std::get_time(&x, "%Y%m%d"); char...

View Article


VC++ 2015のcodecvtでリンクエラーになる問題の回避策

Visual C++ 2015および2017 RCでは、<codecvt>の各クラステンプレートにchar16_tやchar32_tを組み合わせるとリンクエラーになるという問題があります。今回、これに対する条件付きのWorkaroundについて書きます。 まずは、エラーになるコードの例を提示します。 #include #include #include #include int...

View Article


Boostのなんにもしないミューテ(ッ)クス

以下のコードのように、実際には何も行わず、ただミューテックスの要件を満たすだけの実装は簡単に作れるでしょう。Null Objectパターンの一種と言えますよね。 class null_mutex { void lock() {} void try_lock() {} void unlock() {} }; Boostには、そんなクラスがなんだかあちこちにあるようです。 Boost.Signals2:...

View Article

winres.hがWindows SDKに移動していた

リソース関係のヘッダーファイルwinres.hの話です。これはMFCのヘッダーファイルだったはずですが、少し前からWindows SDKに収録されるようになりました。 Visual C++ 2010では、MFC(とATL)のヘッダーファイルがあるフォルダにありました。C:\Program Files (x86)\Microsoft Visual Studio...

View Article

リソース関係のヘッダーファイルまとめ

私が知る、リソーススクリプト用のヘッダーファイルのまとめです。 afxres.h MFCのヘッダーファイルです。winres.hをインクルードしています。リソースID用の定数を多数定義しています。その中にはAFX_IDW_TOOLBARなどAFXで始まるものもあれば、ID_FILE_NEWのように汎用的に使えそうなものもあります。 atlres.h WTLのヘッダーファイルです。Visual...

View Article


リソーススクリプトで最初にincludeするヘッダの選択

手書きのリソーススクリプトなら先頭で、Visual C++プロジェクトでなら「読み取り専用ヘッダーファイル」で指定するヘッダーファイルの話の続きです。前回(リソース関係のヘッダーファイルまとめ)、いろんなリソーススクリプト用のヘッダーファイルを紹介しました。今回は、私の選択基準を書きます。 MFCを使用するWTLを使用するno<afxres.h>yesVC++...

View Article

CreateWindow関数にはHINSTANCEが必要

私がWindows APIプログラミングを始めた頃から、MSDNライブラリのCreateWindow関数にはこんなことが書いてありました。従って、NT系ならここはNULLで良いのだと、最近まで信じていました。 hInstance Windows 95/98:ウィンドウに関連付けられたモジュールのインスタンスハンドルを指定します。 Windows NT/2000:このパラメータは無視されます。...

View Article

phpBB 3.2を日本語化して使う

表(?)の掲示板https://www.activebasic.com/forum/では、phpBBが使われています。そのphpBBを最新版3.2に更新しました。そのときやったことのまとめです。 phpBB...

View Article


Image may be NSFW.
Clik here to view.

WinHTTPがHTTP/2に対応した (Windows 10 1607)

WinHTTPにHTTP/2の対応が入ったようです。そこで、簡単にですが確かめてみました。 WinHTTPは、Windowsの汎用的なHTTPとWebSocketのAPIです。そんなわけで、自身でときどき使ったり、使っているアプリをたまに見かけたりします。 フラグをMSDNライブラリで見つけた この前、WinHttpSetOption関数で指定するOption...

View Article


filesystem::pathの文字の型

以下のpathクラスについてです。これらが内部で使用する型は環境によって異なるという話です。 C++17で標準ライブラリに入るstd::filesystem::path Boost.Filesystem v3のboost::filesystem::path...

View Article

ワイド文字列でファイル名を指定する機能がC++標準に入るようだ

以前より、Visual C++のファイルストリーム(basic_fstream, basic_ifstream, basic_ofstream)には、独自拡張が存在しました。ファイルパスをワイド文字列で指定できる実引数のコンストラクタとopenメンバー関数の多重定義です。理由は、WindowsのAPIがUTF-16 (wchar_t)でファイルパスを扱うためです。...

View Article

System32優先でDLLを探す指定を試してみた

CreateProcess時、PROC_THREAD_ATTRIBUTE_MITIGATION_POLICYでプロセスに対する一部の挙動を変更することが可能です。その中にWindows 10のいつからか、DLLの検索パスについての定数が増えています。前々から気になっていたので、試してみました。 その定数は、UpdateProcThreadAttributeに記載のある以下です。...

View Article

VC++ filesystemのパーミッション取得の実装

C++ filesystemには、パーミッションを取得・設定する機能があります。そんなわけで、たとえばこれをその辺のUnix系システムでg++を使ってコンパイル・実行すれば、755という出力が得られるはずです。 #include #include int main() { using namespace std::experimental::filesystem; auto perm =...

View Article


ドライブ文字を使わないパス指定

Windowsの絶対パスと言えば、C:\Windowsのようなドライブ文字で始まる表記を思い浮かべることと思います。しかし、ドライブ(ボリューム)を指定する表記はほかにもあります。 ボリュームGUID 各ボリュームに対するGUIDです。mountvolコマンドで確認できます。 ディスク番号・パーティション番号による表記...

View Article

変わったパスとVC++のpathクラス

前回(ドライブ文字を使わないパス指定)の少し変わったパス文字列、<filesystem>のpathだとどうなるのか、気になって試してみました。 #include #include int main() { using namespace std::experimental::filesystem; path...

View Article


HTTPSにしました

気分一新を兼ねて、タイトルのとおり、このブログ含めdev.activebasic.com全体を常時HTTPSでの提供に切り換えました。そういうご時世ですので。HSTSはしばらくしたら投入するつもりです。 HTTPSにしました is a post from: イグトランスの頭の中

View Article

MinGWのrandom_deviceがちゃんとしたものになった

少し前まで、MinGWのg++ (libstdc++)ではstd::random_deviceが疑似乱数生成器で実装されていて、デフォルトコンストラクタを使うと毎回同じ乱数列が生成される、という困った挙動でした。 gccをwindowsで使うならstd::random_deviceを使ってはいけない – Qiita [C++]...

View Article


Boost.Beastの最小限のコードを作ってみることにした

HTTPサーバーを作ろうと思ったんです。それでBeastのExamplesを見てみたのですが、1番単純そうなServersのHTTP, synchronousをみても、ファイルサーバーを作るコードになっていて、まだまだ煩雑だと感じました。そこで、ファイルサーバーの処理を取り除いて、真にコアとなる処理を取り出して見ようと思いました。 常にHTTP 200...

View Article

async_acceptにソケットを渡す必要がなくなっていた

最近Boost.Asioのリファレンスを見ていて、async_acceptのオーバーロードが増えていることに気付きました: basic_socket_acceptor::async_accept – 1.66.0。...

View Article

Boost.TypeErasureでmove_only_functionを模倣

P0288R9: move_only_functionが待ち遠しく、似たようなもの(劣化版)を自作しようかどうかよく悩んでいます。そんな折、Boost.TypeErasureで簡単に作れるのではないかと思いつき、試していました。 その結果がこれです: https://wandbox.org/permlink/GwWCWR0PtF4XXqmh #include #include #include...

View Article
Browsing latest articles
Browse All 123 View Live