An Embedded Engineer’s Blog

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

C++

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ライブラリ…

C++でソケット通信 (UDPマルチキャスト/ブロードキャスト編)

まえがき ソケットを使ったEthernet通信の実装方法メモです。 今回は、前回に引き続きC++でUDPマルチキャスト/ブロードキャスト通信を行うための機能を実装します。 ソケット通信は、OSによって実装方法が異なるので、Windows / Mac / Linuxそれぞれの実装を…

C++でソケット通信 (UDPユニキャスト編)

まえがき ソケットを使ったEthernet通信の実装方法メモです。 今回は、C++でUDPユニキャスト通信を行うための機能を実装します。 ソケット通信は、OSによって実装方法が異なるので、Windows / Mac / Linuxそれぞれの実装を行い、環境によって自動的に切り替…