タグ

c++に関するmewtexのブックマーク (15)

  • 入門ガイド — Google Test ドキュメント日本語訳

    はじめに:なぜ Google C++ Testing Frameworkを使うのか¶ Google C++ Testing Framework を上手に活用すれば,より良い C++ のテストを書くことができます. LinuxWindows,そして Mac,あなたが C++ のコードを書いているこれらの環境に関係なく Google Test を利用できます. では,優れたテストを書くにはどうすればよいのでしょうか?Google C++ Testing Framework は,どのように役立つのでしょうか?我々は次のように考えています: テストには, 独立性 と 再現性 が必要です.別のテストの結果に依存して成功したり失敗したりするテスト,をデバッグするのは非常に面倒な作業です.Google C++ Testing Framework は,各テストを異なるオブジェクト上で実行することによって

  • Stroustrup: C++ Style and Technique FAQ 日本語訳

    Bjarne StroustrupによるC++のスタイルとテクニックに関するFAQ オリジナル: Bjarne Stroustrup's C++ Style and Technique FAQ ここにまとめられているのは、私がよく尋ねられるC++のスタイルとテクニックに 関する質問です。もしよりよい質問や回答に対するコメントがあれば、遠慮なく私に メール(bs@research.att.com)でお知らせください。なお、ホームページを改善する ために、私はあまり時間を割けないということを心に留めておいてください。 より一般的な質問は、一般的なFAQを 参照してください。 用語や概念については、C++用語解説を 参照してください。 この文書の内容は、質問と回答をまとめただけのものであるということに注意して ください。よい教科書にみられるような、注意深く選ばれた例題と解説の代わりになる もので

  • リンクと同名シンボル: weak シンボル編 - bkブログ

    リンクと同名シンボル: weak シンボル編 先日の記事では静的リンクの際に同名シンボルの衝突は検出されると書きました。しかし、 weak シンボルが存在すると話は変わります。 次のようなプログラム main.cpp があります。 #include <iostream> class Foo { public: Foo(int x) : x_(x) {} void func() { std::cout << x_ << std::endl; } private: int x_; }; int main () { Foo foo(256); foo.func(); return 0; } このプログラムをコンパイルして実行すると 256 と表示されます。 % g++ -c main.cpp % g++ -o main main.o % ./main 256 ここで、main.cpp とはまった

  • Faith and Brave - C++で遊ぼう

    levtech.jp 前編では2024年現在おすすめしたいC++書籍を紹介しました。 後編では、仕事でソフトウェア開発しながらも、余暇の時間にC++語リファレンスサイトや書籍の執筆、勉強会の開催などをしている立場からおすすめしたい、技術書以外のを紹介する記事を書かせていただきました。 levtech.jp キャリアと技術のWebメディアであるレバテックLABで、C++技術書を紹介する記事を書かせていただきました。 2024年現在でC++を学ぶための材料として参考になれば幸いです。 github.com 2024年もCEDECでcpprefjp所属の方の発表があるので、それに合わせてcpprefjp Tシャツを作ります! 発表者だけでなく、cpprefjpのコントリビューターとスポンサーの方も、実費をいただければ発注します。 この機会に、cpprefjp Webサイトの編集に挑戦くだ

    Faith and Brave - C++で遊ぼう
  • SAFE_DELETE()系のdefineマクロ廃止 - ぼく用あれこれまとめ

    SAFE_DELETE()系の#defineマクロ廃止 なぜ#defineマクロを廃止するの? const定数を使う理由と同じで、型が不鮮明であるため、なるべくC++では使わないほうがいいかと。 マクロはプリプロセス実行なので型チェックが行われませんし、名前空間も存在しません。とても危険です。 こういうの。 #ifndef SAFE_DELETE #define SAFE_DELETE(p) { if(p!=NULL) { delete (p); (p) = NULL; } } #endif #ifndef SAFE_DELETE_ARRAY #define SAFE_DELETE_ARRAY(p) { if(p!=NULL) { delete[] (p); (p) = NULL; } } #endif #ifndef SAFE_RELEASE #define SAFE_RELEASE(p

    SAFE_DELETE()系のdefineマクロ廃止 - ぼく用あれこれまとめ
  • Boost.Geometryの設計がすごい

    最近のboost C++ライブラリは数値計算や幾何計算のほうも充実してきているようで、先日Boost.Geometryの2Dブーリアンを使ってみたらそのパフォーマンスと頑強性に驚かされた。 さらにこのBoost.Geometryは設計が素晴らしい。そのDesign Ratonaleを読んでみたところとても面白かったので、より多くの人に読んでもらいたいなと思って和訳してみた。 わかりやすい題材を元に、traits, タグディスパッチ、コンセプト、メタ関数などのテンプレート周りの独特の技法が少しずつ登場してくるので、これらの概要を把握するにもとても良い資料だと思う。 原文はココ。 なお、「ジェネリック」、「特殊化」といったジェネリックプログラミング独特の用語が頻出するので、なじみのない方は あらかじめここで概要をつかむといいかもしれない。 設計の理論的基礎(Design Rationale)

  • redboltzの日記

    FAQに解説があった。 http://www.cmake.org/Wiki/CMake_FAQ#How_do_I_make_my_shared_and_static_libraries_have_the_same_root_name.2C_but_different_suffixes.3F しかし、これはかなりバッドノウハウ臭い。 まず、cmakeでは以下のように同名でADD_LIBRARYすることができない。 ADD_LIBRARY(msgpack SHARED ${msgpack_sources}) ADD_LIBRARY(msgpack STATIC ${msgpack_sources}) そこで、shared libraryをmsgpack, static libraryをmsgpack-staticとする。 ADD_LIBRARY(msgpack SHARED ${msgpack

    redboltzの日記
  • Visual Studio で GoogleTest を使う - Natural Software

    先日の TDD BootCamp では Boost.Test を使って演習をした。 初めてBoost.Testを使ったけど、Boost自体のコンパイルに時間が掛かるは、テストコードのコンパイルに時間が掛かるわ、当日Linuxemacs の環境で固まるわで、ちょっとアレなので、今仕事でも使ってるGoogleTest をWindowsのVisual Studio環境で動かしてみた。 ダウンロード、コンパイル、テストの作成といった一連の流れはこちらの通りだけど、備忘録を兼ねて残しておく。 環境 Visual Studio 2008 Pro Google Test 1.5.0 手順 引用元手順を少し改変 http://code.google.com/p/googletest/downloads/listからダウンロード 試したのは1.5.0 解凍してmsvc/gtest.sln を実行 変換ウ

    Visual Studio で GoogleTest を使う - Natural Software
  • 浪漫の求道者:GoogleTestがかなりいけてる その1

    [GoogleTest1.3.0を使ってみた] Google C++ Testing Framework http://code.google.com/p/googletest/ Googleのテストフレームワーク「GoogleTest」に去年の年末くらいから興味を持ち始めて使ってみた。 かなりいけてるのに日語解説が少ないので、やった事をいろいろと書き出す。 なにができるのか・マルチプラットフォーム対応 Windows(VC)、Cygwin(gcc)、LinuxMacOSWindowsCE、Symbian・・・ ・テストコードの自動発見   RUN_ALL_TESTS() で勝手にTEST(Hoge, hoge)と書いたコードを探索して実行してくれる (もちろん任意のテストだけ実行する、しないのオプションもあり) ・豊富なAssertion 失敗(ASSERT)と警告(EXPECT)

  • ソケット入門(上)

    ソケット入門(上) ソケットとの出会い 私がソケットプログラミングと出合ったのは、2000年でした。それまでDOSのプログラミングしか知らなかった私にとって、マルチタスクOS上で、複数の相手と同時に通信を行うソケットというものは衝撃的でした。当時、ソケットプログラミングを1から学習しなければならない状況になってしまった時には、すでに仕事を受注した後で、納期も迫っている状態でした。そこで、急いで文献をあさったり、ネットで検索したりしたのですが、なかなか初めての人にわかりやすく説明された文献に出会うことができません。 それでも、なんとか手探り状態でソフトを作り上げ納品したのですが、ソケットプログラミングでは常識的である事、たとえば、0バイト受信後に必須のソケットの切断処理や、ソケットからデーターを受信するバイト数が必ずしも一定ではない事を知らずに作っていたため、ひどく叱られた事を思い出します

  • AndroidのNFC機能でFeliCaの読み書きをする | −ゆめログ− | ゆめみスタッフブログ

  • Makefileの書き方 - スキルアップ輪講

    makeって何? † ソースファイルを分割して大規模なプログラムを作成していると、コマンドでコンパイルするのが面倒です。また、一部のソースファイルを書き換えただけなのに全部をコンパイルし直すのは時間の無駄です。 そんな問題を解決するのがmakeです。Makefileと呼ばれるテキストファイルに必要なファイルと各ファイルのコンパイルのコマンド、ファイル間の依存関係を記します。そして、“make”というコマンドを実行するだけで、自動的にコマンドを実行してコンパイルしてくれます。これだけではスクリプトと大差がないのですが、makeはMakefileに記された依存関係に基づいて更新されたファイルの内関連のあるものだけを更新することで、コンパイル時間を短くします。 makeは特定のプログラミング言語に依存したものではありません。C言語のソースファイルのコンパイルにも使えますし、Verilog-HDL

  • tips : tips/02.プログラミングなど/C言語/C言語のLinux環境.txt

    gccとかgdbとかgoogle-perftoolsとか、C言語のLinux環境関連のメモ コンパイル # バージョンを確認する gcc -dumpversion # オプションつけないでコンパイル gcc xxx.c → a.out という名前の実行ファイルが出来る。実行権限もつけてくれるようだ。 # 実行ファイル名を指定したいとき gcc -o xxx xxx.c → xxx という名前の実行ファイルが出来る # その他のオプション -Wall : 警告を全部みせる -O1 (-O)  : ゆるい最適化 -O2       : 普通の最適化 (普通はこれをつかうそうだ) -O3       : 強力な最適化 (コンパイラのバグを引き当てたりするそうだ) -g (== -g2) : デバッグ用のシンボル -g3         : マクロも展開する -g

  • ネットワーク帯域計測プログラム - Cube Lilac

    複数のソケットの入力状況を管理するクラス,つまりselect()のラッパクラスを数年前に作成したのですが使用感がイマイチだなと思って没にしたままだったので,書き直してsockmanagerと言うクラス名でCLXに入れました.最初に通信が発生したときに呼び出す関数オブジェクトをソケットとペアで登録しておいて,後はsockmanager側で必要に応じてその関数を呼び出してもらう,と言うコンセプト自体は以前に作成したものとかわりません.boost::asio::io_serviceの実装に似せようかなと思ったのですが,ソースコードを読みきれなかったので断念. 単にライブラリを紹介するのもアレなので,ネットワーク帯域を計測するプログラムをサラっと書いてみて,そのプログラムで使い方を紹介します.帯域計測と言っても,データを流してそのスループットを測ると言う単純なもので,何か(計測用トラヒック減らすた

    ネットワーク帯域計測プログラム - Cube Lilac
  • gcc+gdbによるプログラムのデバッグ 第1回 ステップ実行、変数の操作、ブレークポイント

    しかし、ブレークポイントという機能はデバッガの手助けなしでは実現できません。 ブレークポイントとはプログラムの強制一時停止を行うポイントで、実行中のプログラムがブレークポイントに遭遇するとプログラムは一時停止され、デバッガによるプログラムへの介入を行えるようになります。 ブレークポイントは次のような場所に設定できます。 指定した行番号のプログラムを実行しようとする瞬間 関数を呼び出した瞬間 その他、C++などでは「例外が発生した瞬間」などにもブレークポイントを設定することができます。 行番号ブレーク ブレークポイントとしてよく使用されるのは、「プログラムの特定の位置」です。 例として、bubblesort.cプログラムのsort関数内で、隣り合う二つの要素を比較している箇所にブレークポイントを設定してみます。 25|/* bubble sort */ 26|void sort(int *a

  • 1