文書の過去の版を表示しています。


NestDAQ C++ techniques

  • NestDAQ では開発者のコーディング量削減のため、Boost ライブラリといった便利な外部ライブラリ、さらに C++11 以上で採用された便利な機能が多く使われている。そのため、それなりに新しい C++ の書き方に慣れておく必要がある。個人的には、プログラミング初学者の可読性を考慮し、CERN ROOT v5 のインタープリター程度でつかえていた機能しか普段は使っていないので、なかなか覚えるのが大変。最近は new / delete を使わず、スマートポインタとかを使わないといけないらしい。(参考: servernote.net –【C++】new/deleteを撤廃しstd::shared_ptrを使う https://www.servernote.net/article.cgi?id=cpp-std-shared-ptr )

検証に使ったコード

型を調べる

  • std::chrono ライブラリなどのライブラリを使っていると、型がよくわからなくなっていくる。ウェブで調べるのも良いが、コード中では、調べ方がいくつかあるようだ。Clang++ だと、typeid(parameter).name() として、結果を c++filt -t コマンドに渡すと、プラグラムで使われている型がどんな型かわかる。以下、std::chrono の場合の確認用プログラム ( https://github.com/nobukoba/std_chrono_coding_sandbox/blob/f7f4b4db501db0b9b0aaab640c513e16c325d511/std_chrono_multi_platforms.cc ) を Ubuntu MATE 22.04.3 LTS で走らせた結果。
    ### Parameter definitions ###
    std::chrono::system_clock::time_point  p_time_point;
    std::chrono::system_clock::duration    p_duration;
    std::chrono::system_clock::period      p_period;
    
    ### typeid().name() results ###
    typeid(p_time_point).name(): NSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEEE
    typeid(p_duration  ).name(): NSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEE
    typeid(p_period    ).name(): St5ratioILl1ELl1000000000EE
    
    ### c++filt -t results ###
    c++filt -t typeid(p_time_point).name(): 
    std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >
    c++filt -t typeid(p_duration).name(): 
    std::chrono::duration<long, std::ratio<1l, 1000000000l> >
    c++filt -t typeid(p_period).name(): 
    std::ratio<1l, 1000000000l>
    
    ### system_clock::period::num and den check ###
    typeid(std::chrono::system_clock::period::num).name(): l
    typeid(std::chrono::system_clock::period::den).name(): l
    std::chrono::system_clock::period::num: 1
    std::chrono::system_clock::period::den: 1000000000

std::chrono ライブラリ

Arrow operator (->) in the function declaration

softwares/nestdaq/cplusplus.1706491788.txt.gz · 最終更新: 2024/01/29 10:29 by kobayash
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0