programing_language:cpp

C++

基底クラスで定義されている関数を、派生クラスの関数で定義を上書きできるように、基底クラスの関数(上書きされることがある関数)に取り付けておく属性

基底関数で内容の定義を行わない仮想関数のこと

C++ 値渡し、ポインタ渡し、参照渡しを使い分けよう
ペリフェラルのドライバクラスを作るとき、ペリフェラルの数字を参照したいのでそのペリフェラルの構造体メンバ変数のポインタを渡すことでその中身を参照していた。 しかしこの参照私というのを使うとよりいい感じ?に書ける可能性が出てきたので試してみたい。

tuple型は、複数の型の値を保持する「タプル」を表現するためのクラスである。 → 戻り値どうやって確保するん? autoで記述して、tuple型クラス内のreturnから推測されて自動的に型が決まる?

clang-formatで成型する。個別の設定は .clang-formatに保存、設定可能。 ClangFormat
VSCodeでフォーマッタが動かないときがある,LLVMをインストールしてパス通せば良い.
WindowsのVSCodeでclang-formatが効かない時の確認と対処
Error write EPIPE using clang-format with visual studio code (Assumption: user settings ignored, default value added to each workspace) #83

lint とは、主にC言語のソースコードに対し、コンパイラよりも詳細かつ厳密なチェックを行うプログラムである。静的解析ツールとも呼ばれる。(by Wikipedia)
cppplintがよい?

cpplint でコーディングチェック
C++ Lint 何が良いか問題

defineディレクティブなどを用いて、ビルド時に定数として結合しておきたい、c++ならconstexprを使うと楽に作れる

constexpr char build_time_str[] = "\r\n" __DATE__ ", " __TIME__ "\r\n";
constexpr char gcc_version_str[] = "gcc version : " ARM_GCC_VERSION "\r\n";
constexpr char git_branch_str[] = "git branch : " GIT_BRANCH_NAME "\r\n";
constexpr char git_tag_name_str[] = "git tag : " GIT_TAG_NAME "\r\n";
constexpr char git_info_str[] = "git info : " GIT_BUILD_INFO "\r\n";

文字列定数について(#defineかconstexprか)

std::stofを使っていたけど、C++17以降ならstd::from_charsを使ったほうが良さそう

参考文献

  • programing_language/cpp.txt
  • 最終更新: 2024/10/10
  • by yuqlid