タグ

c++に関するfoaranのブックマーク (97)

  • Google Testをインストール、しないですませる方法 - エンジニアのソフトウェア的愛情

    久々にGoogle Testネタ。 以前ちょっとふれて宿題としておきながら放置していたことを思い出したので、そのフォロー。 fused source files are included. バージョン1.5.0の時点で新機能(?)として「fused source files」が追加されています。先のエントリを書いた時点では調査不足でわかっていなかったんですが、名前から予想したとおり、「コピーしてincludeてコンパイルしてリンクすりゃOK」というものでした。 Fusing Google Test Source Files 現在最新のリリースである1.6.0のzipファイルを展開すると「fused-src」というフォルダがあり、その中に「gtest」というフォルダがひとつだけ入っています。 gtest-1.6.0/ fused-src/ gtest/ このフォルダの中に行数が約2万行の「g

    Google Testをインストール、しないですませる方法 - エンジニアのソフトウェア的愛情
  • ビギナーのためのC/C++言語

    ビギナーのためのC/C++言語 ビギナーのためのC/C++言語 プログラムを作っていると、変なノウハウが必要になる場合があります。 こんなのを含めて、初心者に役立つ内容を提供していきます。 ■Contents コーディング規約 if(条件)文の書き方 データ圧縮 演算を高速に 条件マクロの多いソースを読みやすく makefileの依存関係を自動生成&makefile雛形 ビットを扱う ソフトウェアの解析術 このページで使用するmakefile 割り算と掛け算 defineとconstの違い 役に立つ書籍 ページ先頭へ ■if(条件)文の書き方 範囲指定の書き方 多くの方は、変数を左辺、定数を右辺に書く方が多いように感じます。 ただ、範囲指定の場合、どちらが見やすいでしょうか? ・if( val >= 0 && val < 100 ){ ... ・i

    foaran
    foaran 2012/07/13
  • 無気力ITエンジニアの備忘録

    仕事でcentos入れたPCをvnc経由で使っているが、今日"yum update"してtigetvncをアップデートしたときにvncの挙動がおかしくなったので、そのときの対応をメモ。 動作がおかしくなってからのログを追っていくと、yumで入ったのは librsvg2 tigervnc-server の2つ(と確かもう一つあった)で、アップデート以降/var/log/messsageにlibrsvg2がエラーを吐いていることから、どうもこいつが怪しい。 調べてみると同じ感じのエラーの記事があって、以下のコマンドでlibrsvg2をダウングレードしたら無事に動くようになった。 # yum downgrade librsvg2 前回に引き続きenchant.jsで遊ぶ。 今回はもう少しゲームっぽいものってことで簡単なブロック崩しを組んでみた。 main.jsは以下の通り。 /** * ench

    無気力ITエンジニアの備忘録
  • lexical_castと戻り値の型推論 - 初学者の箸置

    最近、型ルーズな言語や、型推論してくれる言語ばかりいじっていたので、ものすごく怠惰になっている自分に気がつく。発端は「C++でsscanf()とかatoi()とか使いたくないけど、stringstreamつかうのめんどいよー」とつぶやいたら、「それ boost::lexical_castで」と教えてもらって、大変大喜びなどしたこと。 #include <iostream> #include <boost/lexical_cast.hpp> #include <string> using namespace std; using namespace boost; main() { int sum = 0; string input; while (cin >> input) sum += lexical_cast<int>(input); cout << sum << endl; } しかし

    lexical_castと戻り値の型推論 - 初学者の箸置
  • 戻り値の型の推論 - NyaRuRuが地球にいたころ

    お.これは懐かしい話題. 前から書いているが Dictionary<List<Abrakadabra>, IEnumerable<Abrakadabra>> dic = new Dictionary<List<Abrakadabra>, IEnumerable<Abrakadabra>>(); は Dictionary<List<Abrakadabra>, IEnumerable<Abrakadabra>> dic = new(); で書きたいんだよな。って、C#3.0ではvarキーワードと型推論が使えるから短く書けるのかな? (まだあまり使ってないのがばればれ) 仰るとおり,短さで言えば以下のように書けますね. var dic = new Dictionary<List<Abrakadabra>, IEnumerable<Abrakadabra>>(); さて,話を戻して「左辺に合うよう

    戻り値の型の推論 - NyaRuRuが地球にいたころ
  • Linux共有ライブラリの簡単なまとめ - wagavulinの日記

    Linuxで共有ライブラリ(*.so)を作るようになったのでちょっと勉強してみた。今までは使うだけだったので、以下のようなことは知っていた。作るときはgccの-sharedオプションを使う。使うときはgccの"-lライブラリ名"でリンクするライブラリを指定する。リンク時のライブラリ探索パスは-Lオプションで指定する。実行時のライブラリ探索パスは/etc/ld.so.confに書いてあるディレクトリ。環境変数LD_LIBRARY_PATHでも指定可能。ライブラリを作るときは、.cから.oを作るときに-fPICをつけるといいらしい。新しくライブラリを入れたときはldconfigするといいらしい。逆に今まであまり知らなかったこと。ほとんどのライブラリはlibhoge.so, libhoge.so.1, libhoge.so.1.1のように3つくらいのファイルがあり、libhoge.soやlibh

  • ソフト開発/C++ リンク集

    ソフト開発関連のリンク集を独立させました。僕が今までに参考にしたHPを、項目別に紹介します。 妙にGoogleで高位置にヒットしますが、そんなに充実してないですよ。

    foaran
    foaran 2012/05/04
  • C++言語仕様 - 自分用メモとか

    class CSubClass : public CSuperClass { private: int subNum1, subNum2, subNum3; public: CSubClass(int n, int n1, int n2) : CSuperClass(n), subNum1(n1), subNum2(n2) { /// 代入での初期化は望ましくない。 subNum3 = n; } } 具体的には、subNum(n1), subNum2(n2), 等は、コンストラクタを呼び出して初期化しているのと同義です。 つまり、初期化子リストを用いず代入で初期化すると、(↑の例では、subNum3 がこれにあたる) 初期化子リストに無いメンバ変数が、デフォルトコンストラクタで初期化される。 デフォルトコンストラクタで初期化されたメンバ変数に、値を代入する。 ということになり、全く無意味

    foaran
    foaran 2012/05/04
    初期化リストで明示的にデフォルトコンスタクタを呼ぶことも可能。 hoge_()
  • Kawamura's ChangeLog - vector を適当に初期化 -

    foaran
    foaran 2012/05/04
    ちょっとした用途だったらboost::assignより楽そう
  • C++マニアック,変数,,local,global,variable,メモリ,memory,構築,消滅,construction,destruction

    メモリの種類と変数の配置について理解しよう ページの先頭へ 変数が、システムのメモリ上にどのように配置されるのかを理解すると、自分の書いたコードによってコンピュータの中で何が起こるのかが想像できるようになります。この動きを理解することが C++ プログラミングでは必須です。 コンピュータの主記憶は、通常大きな、たとえば連続した 2GB の塊ですが、システムは、その中を左下の図のような三つの領域に分けて使用します。 CODE は実行のための機械語をおく領域で、現在実行中のコード位置は IP(インストラクション・ポインタ) で指し示されています。 HEAP はプログラムの中で、「必要に応じてシステムから取り」、「使用後にシステムに戻す」という使い方をするメモリのプール領域です。一時的にこの中をさす DP(データ・ポインタ)が使われることもあります。C++ ではヒープのデータを取るには

    foaran
    foaran 2012/05/04
  • http://www.ai.cs.kobe-u.ac.jp/~kawamura/2006-12-19-3.html

    foaran
    foaran 2012/05/04
  • C++で開発

    [ Home on 246net ] C++で開発 好むと好まざるとに関わらず、C++言語を使った開発をすることになったときに調べたことの蓄積。 言語仕様 ブートストラップ main関数 main関数について パッケージ管理 名前空間 名前空間の使用 ヘッダファイル ヘッダファイルとは インクルードガード ヘッダファイルの依存性をなくすには 文法要素 プリプロセッサ 条件コンパイル 可変引数を取る関数(stdargs他) 定義済みマクロ 型 組み込み型 標準定義型(標準typedef等) ビットサイズ固定整数型、 typedefの注意 クラス コンストラクタ メンバー変数 演算子関数 ビットフィールド 継承 例外 標準例外 例外処理のプログラミング テンプレート メンバ関数の特殊化 デバッグ アサーション ANSI Cのassert VC++固有のassert コーディング標準 公知のコー

    foaran
    foaran 2012/05/04
  • あるシンボルが どのオブジェクトファイル/共有オブジェクトに含まれているか検索するスクリプト - akihiko’s tech note

    プログラミングしていると,あるシンボル(変数名,関数名,クラス名,etc.)がどのオブジェクトファイル(or アーカイブファイル)や共有ライブラリで定義されているか,調べたいことがある(どのファイルをリンクすればいいかわからないときなど).通常はシンボル名でググればよろしい.だが,稀に,ググるのでは解決できないことがある.そのような場合の対処法として,無理矢理 /usr/lib や /lib にあるライブラリファイルを検索する方法を紹介する. ライブラリの種類 予備知識なので,読み飛ばしても可. プログラムをコンパイルして生成されたオブジェクトファイル (*.o) をコマンド ar でアーカイブすると,アーカイブファイル (*.a) ができる.これが,静的ライブラリ (static library).実行ファイルの生成時に静的にリンクされるため,実行時にはアーカイブファイルは不要. 一方,

    あるシンボルが どのオブジェクトファイル/共有オブジェクトに含まれているか検索するスクリプト - akihiko’s tech note
  • いやなブログ - 文字列操作の比較表: Ruby, Python, JavaScript, P...

    文字列操作の比較表: Ruby, Python, JavaScript, Perl, C++ Ruby, Python, JavaScript, Perl, C++ の文字列操作の比較表を作りました。配列操作の比較表の続編です。間違いなどがあったらご指摘いただけると助かります。 Ruby (String) Python (str) JavaScript (String) Perl C++ (std::string)

    foaran
    foaran 2012/05/02
  • WhyINoLongerLikeOrUseCPlusPlus - もう C++ なんて好きでもないし使いもしない理由。

    WhyINoLongerLikeOrUseCPlusPlus - もう C++ なんて好きでもないし使いもしない理由。 目次 この文書について もう C++ なんて好きでもないし使いもしない理由。 もう C++ なんて好きでもないし使いもしない理由。 この文書について "Why I No Longer Like or Use C++" の日語訳です. http://prophipsi.blog-nospam-spot.com/2008/03/why-i-no-longer-like-or-use-c.html -nospam- は削除してください... 推敲歓迎: 誤訳, タイポ, 訳語の不統一, そのほか... 今日、 Artima に上がっていた C++ の記事を読んだ。右辺値参照(rvalue reference) という C++ の新機能について解説するものだ。頑張って読むうち

    foaran
    foaran 2012/05/02
    「C++ の連中は性能に取り憑かれている。」
  • スレッドプログラミングメモ - KuniWiki

    foaran
    foaran 2012/05/01
  • C言語ポインタ談義 | Netsphere Laboratories

    2008.12.8 新規作成。 (1999.12.14-16, 1999.12.28, 2001.7.23 の日記を再構成、加筆。) はじめに C言語は、今の感覚だとずいぶん古くさいプログラミング言語ですが、まだまだ幅ひろく使われています。 C言語は、「ポインタ」が難しいという評判があります。優れた解説もあるものの、一方で明らかに妥当でないものも駆逐されずに広く公開されています。 このページでは、C/C++言語でのポインタと配列について改めて整理していこうと思います。 もとの日記の「fjで一時盛り上がっていた」とか「infoseekで・・・を検索」というフレーズが時代を感じさせます。fj.comp.lang.c とかまだあるんでしょうか。 参照する仕様 (2020.1) C言語 (plain C) の最新の仕様は, ISO/IEC 9899:2018 です。"C17" と呼ばれます。gcc

    foaran
    foaran 2012/05/01
  • C++ で Buzztter を Growl する - IT戦記

    はじめに Buzztter の RSS を持ってきて、新しいキーワードを Growl に表示するものを作ってみた。 C++ でも boost::asio とか、 libxml2 とかを使うとけっこうサクっと書ける。ってこともないか。。 必要なもの boost libxml2 Growl SDK ソース #include <libxml/xmlreader.h> #include <boost/asio.hpp> #include <boost/shared_ptr.hpp> #include <boost/unordered_map.hpp> #include <Growl/Growl.h> static CFTypeRef notifications[] = { CFSTR("Buzz word arrived.") }; static int notifyReading(void *i

    C++ で Buzztter を Growl する - IT戦記
  • ecug - Revision 458: /tangle/xushiwei/dht/tags/flare-1.0.8/src/lib

    foaran
    foaran 2012/05/01
    ソース綺麗
  • はてなブログ | 無料ブログを作成しよう

    オーベルジーヌ実レポ べ物の鼻塩塩(未だに通じるのかな) オーベルジーヌというカレーをご存知だろうか 都内にあるデリバリー専門のカレー屋で、 ロケ弁などで大人気の格欧風カレーが楽しめるらしい いいな〜 いいな〜オブザイヤー 都内の奴らはこんな良いモンってんのか 許せねえよ………

    はてなブログ | 無料ブログを作成しよう
    foaran
    foaran 2012/05/01