サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ノーベル賞
pepshiso.hatenadiary.org
日本語の記事が見当たらないので書きます。iOS のSSLのバグは、コンパイル時に検出できます。警告オプション -Wunreachable-code をつけて clang でコンパイルすれば良いだけです。 バグの原因 このバグの原因は、意図しない場所に goto 文が書かれていたため、重要な処理をスキップしてしまうというものです。 こちらのブログ記事で紹介されてますが、単純化すると以下のようになります。 error_code important_function() { error_code err; // ... if (err = some_function(...)) goto fail; if (err = some_function2(...)) goto fail; goto fail; // (A) // 重要な処理 (B) // ... fail: // 後始末 // ...
最近MacBook Airを買いました。なかなか快適です。ただ、期待していたのと違いデフォルトではGCCが入っていない。Xcodeというものを入れるとGCCも入るらしいことを知って、Xcodeを入れましたが入ったのはGCC 4.2.1。これではとても辛いので、Homebrewを使ってGCC 4.6.0を入れてみました。*1 Homebrew本家のリポジトリにはGCCが無いようなので、homebrew-altというリポジトリから入れると良いらしいです。*2以下のコマンドを打てばいいはずなのですが、 $ brew install https://github.com/adamv/homebrew-alt/raw/master/duplicates/gcc.rb --enable-all-languages 私の環境 (Mac OS X 10.7 Lion) ではmake bootstrapに失
BoostにはC++11対応がなされており、ヘッダーオンリーライブラリなら g++ -std=c++0x source.cc とするだけで使うことができます。*1しかし、ビルドが必要なライブラリの場合には落とし穴があります。ライブラリを、bjamを使って通常の手順で生成した場合、-std=c++0x無しでコンパイルされてしまいます。これではリンクエラーになってしまいます。*2 この問題に関する日本語情報が見つからなかったので解決法を書いておきます。*3 解決法は非常に簡単です。user-config.jamというファイルを書いてホームディレクトリに置き、Boostをビルドするだけです。user-config.jamは次の形式に従って書いてください: using gcc : バージョン : g++のコマンド名 : <cxxflags>-std=c++0x ; 例えばGCCのバージョンが4.6
これはC++ Advent Calendar jp 2010への参加記事です。 C++の次世代規格であるC++0xには、新しくautoという機能が加わります。autoは次のように使います。 auto p = std::make_pair(1, 2.0); 上のコードでは、std::make_pair(1, 2.0)の型が推論され、pの型はstd::pairとなります。 以下のような std::pair<int, double> p = std::make_pair(1, 2.0); 冗長な型の記述をなくせる非常に便利な機能です。constをつけたり、参照にしたりすることもできます。詳しくはこちらを御覧ください。 このようにautoはとても便利な機能なので、C++0xが普及したら多用されることでしょう。しかし、何も考えずにautoを使うと、ごく稀に分かりにくいバグを入れてしまう場合があります
このページを最初にブックマークしてみませんか?
『pepshiso.hatenadiary.org』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く