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

サイズ別に整数型を多重定義したかった

この記事は、初心者C++er Advent Calendar 2016の23日目の記事です。 WindowsのVisual C++でこんなコードを書き始めたんです。 #include #include void f(std::uint8_t) {} void f(std::uint16_t) {} void f(std::uint32_t) {} void f(std::uint64_t) {}...

View Article


tmからtime_tにUTCで変換する関数を探した

次の表を見てください。<time.h>あるいは<ctime>でtime_tとtm構造体との変換を行う関数をまとめました。 time_t→tm構造体 tm構造体→time_t 現地時刻 localtime mktime UTC gmtime ? 表の「?」の部分、UTCでtm構造体からtime_tに変換する関数、それがCおよびC++の標準ライブラリにはありません。...

View Article


glibcのwchar_tがUCS-4であることを確認した

主にLinuxで使われるGNU C Library (glibc)では、wchar_tをUCS-4 (UTF-32)固定としている、そう私は認識しています。しかし、ずっとその根拠を確かめずにそう思い込んでいる状態だったので、気になって調べました。 マニュアルにそのような記載が無いかと探した結果、The GNU C Library: Selecting the...

View Article

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
Browsing all 123 articles
Browse latest View live