An Embedded Engineer’s Blog

とある組み込みエンジニアの備忘録的なブログです。

Tips

C++でログ出力

まえがき 今回は、以下のような機能を持ったログ出力クラス(Logger)を実装します。 Infomation / Warning / Errorのログを使い分けられる 各ログは分かりやすいように色付きで表示 文字列フォーマッティング対応 マルチスレッド時の排他処理 同時にファイル…

C++でスタックトレース(関数コール履歴)の取得

まえがき 今回は、前回に引き続き、C++で例外発生箇所と状況を特定するために、スタックトレースを取得する方法を実装します。 前提条件 今回実装したソースは以下の環境でビルド、動作確認しています。 OS Ver Compiler Remarks Windows 10 Visual Studio 2…

C++で例外発生箇所(ファイルパス/ファイル行番号/関数名)の特定

まえがき 今回は、C++で例外発生箇所を特定する方法についてです。 C++やC#といったオブジェクト指向言語では、エラー処理は例外(Exception)という機構を使うことが一般的です。 C++では、例外をthrowするときにエラー情報を文字列として渡すことで、例外をc…

C++で文字列フォーマッティング(書式付き文字列生成)

まえがき C++でprintfライクな文字列フォーマッティングの実現方法です。 C++で文字列フォーマットをする方法はいくつかあります。 標準では、std::coutなどのiostreamを使った方法ですが、個人的にはちょっと使いづらいです。 C++20では、formatライブラリ…

Excelの列名 <—> 列番号相互変換

まえがき Excelの列名(A, B, ..., AA, AB)と列番号(1, 2, ...)を相互変換する方法のメモです。 ついでに、相互変換するWindows用アプリケーションも作成しました。 列名 <--> 列番号相互変換 共通定数 まずは、共通で使用する定数を定義します。 // アルファ…