ただのメモ

開発で得た知識のアウトプット

C++

【C++】「一つだけ必要な変数」の実装例を調べた

C++におけるプログラム中で実体が一つだけ必要な場合の実装例を調べてみました。特に、GitHubでStar数が多いものや開発が活発なものを対象としました。プログラムで共通した変数を参照するConfigやLoggerなどを想定しています。 ただ、グローバル変数とexter…

【meekrosoft/fff】 MSVCでWindows APIのフェイク関数を作ると多重定義となる (LNK2005)

先日からWindows APIを多く含んだC++プロジェクトのテストを書いています。その際、Windows APIのスタブ/モック用のフレームワークとしてfffを利用しています。 github.com しかし、READMEに沿ってWindows APIのフェイク関数を定義したところ、MinGW-w64では…

Windows環境でwxWidgetsのインクルードやリンクが失敗する問題 (3.0.x, 3.1.x, Visual Studio 2019, MinGW)

今回はVisual Studio 2019でwxWidgets 3.0.5のビルドが失敗する問題と、MinGW-w64でwxWidgets 3.1.4のビルドが失敗する問題の対策です。 wxWidgets 3.0.5 + Visual Studio 2019 問題 対策 wxWidgets 3.1.4 + MinGW-w64 問題 対策 追記 素直にVisual Studioを…

GitHubリポジトリにSynopsys Coverity Scan Static Analysisのバッジをつける

C++

今回はGitHubのREADMEでよく見かけるCoverity Scanのバッジをつける流れのメモです。 ← コレ Synopsys Coverity Scan とは 今回利用するプロジェクト 手順 GitHubとの連携 プロジェクトの追加 解析 バッジを貼り付ける Synopsys Coverity Scan とは Coverity…

MinGWでUI Automationを使う (CMake, MinGW-w64, uiautomationclient.h)

C++のコンパイラを自由に選べる環境ならば、GNUのg++を利用したいと考えている人は少なくないかと思います。Windowsでは、MinGWやCygwinなどを利用することになると思いますが、付属されているWindows SDKが完全なモノとは限りません。今回は頻繁に利用され…

カラースキーム・テーマを他のテキストエディタ用に変換するツール【TeraPad, さくらエディタ対応】

C++

今回は、テキストエディタの色設定を相互変換できるツールの紹介です。C++の勉強の副産物として生まれたツールですので、TeraPadとさくらエディタにのみ対応しています。ソースコードはこちらです。 github.comGitHubのREADME.mdに実行方法がありますので、…

【C++】ofstreamでUTF-8 with BOMを出力する方法

C++

今回はC++の標準ライブラリのfstreamのwrite関数を用いた、バイトオーダーマーク(BOM)の付け方をご紹介します。 以前は標準ライブラリのcodecvtを利用することで変換できましたが、非常に分かりにくいうえ、C++17よりcodecvtは非推奨となっています。そこで…

【Qt】複数のウィジェットを含むカスタムウィジェットを作る方法

C++

今回は、Qtについての備忘録です。 前回と同様、学習のアウトプット目的で書いています。 ご指摘等ありましたら、コメントに書いていただけると幸いです。動作環境は以下の通りです。 【OS】Windows10 64bit 【CPU】Intel core i5-4590 【Qt】5.11.2 64-bit …

【Qt】CDBをデバッガとして利用する方法

C++

今回は、QtにCDBをデバッガとして設定する方法を解説します。Qtでデバッグ開始時に以下のようなエラーを吐かれてデバッグができないケースがあります。 The selected debugger may be inappropriate for the inferior. Examining symbols and setting breakp…

タスクシステムライブラリ tasksyslib リファレンス

C/C++対象のタスクシステムライブラリtasksyslibのリファレンスです。 GitHubでダウンロードする 規約等をみる InitTaskSys関数:タスクシステムの初期化 RegisterNewTask関数:タスクの登録 SetTaskParameter関数:タスクの設定 IsActivateRegdTask関数:タ…

インライン関数はヘッダファイルで実装する

C++

2020/3/6に更新しました インライン関数はC++やC99以降のC言語でサポートされています。このしくみは、マクロ関数のように呼び出しのオーバヘッドを避けることができます。 関数におけるオーバーヘッドとは、関数の定義が別のアドレスにあることが原因で発生…