constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
![C++の話(本当にあった怖い話)](https://cdn-ak-scissors.b.st-hatena.com/image/square/0edf532e043c7faa9adc438079ff02173e46fada/height=288;version=1;width=512/https%3A%2F%2Fcdn.slidesharecdn.com%2Fss_thumbnails%2Fchorrorkai-100711201102-phpapp01-thumbnail.jpg%3Fwidth%3D640%26height%3D640%26fit%3Dbounds)
C++ のシンボルをデマングルする C++ コンパイラはシンボルが一意の名前を持つように名前マングル (name mangling) と呼ばれる処理を行います。本記事では GNU の開発環境で C++ のシンボルをデマングル (demangle) する方法を紹介します。 マングルの方法はコンパイラ依存です。同じコンパイラでもバージョンによってマングルの方法が異なることがあります。たとえば GCC 3.x では int foo(int) を _Z3fooi に、 int foo(const char*) を _Z3fooPKc のようにマングルしますが、 GCC 2.95 ではそれぞれ foo__FPCc, foo__Fi となります。 コマンドラインからデマングル C++ のオブジェクトファイルに nm をかけると、デフォルトではマングルされた読みづらい形式でシンボルが出力されます。 %
About 標準C++ namespaceについて 以前ネット上で検索して見つからず、途方に暮れたのがこのnamespace(名前空間)だ。 2007/10/09 "using namespace seal::foo;"と書いていたのを"using seal::foo;"に修正。(Thanks to デフォルトの名無しさん) 名前空間とは 従来のC、及び標準化以前のC++の識別名はプログラムを構成する全要素中で一意である必要がある。例えば、stdio.hをインクルードすると、独自にFILEという型を作ることはできない。名前が衝突するため、コンパイルエラーとなるからだ。 標準ライブラリの型名や関数名は誰もが知ってるから、衝突が起こることはまずないが、違うベンダが開発したライブラリを組み合わせて使ったりすると、名前の衝突が起きる可能性がある。 そこでC++に導入されたのが名前空間である。名前空
さて、前回のメッセージボックスのように、本来HSPでできることをわざわざWin32 APIを使って実現させる必要などないので、どうせやるならHSPの標準機能ではできないことをやってみたいと思います。で、今回の目的は「プロセス間のメモリの共有」です。これを実現させるには、Windowsが持つメモリマップトファイルの機能を使います。 メモリの共有 Windowsでは、すべてのプロセスはそれぞれ自分専用の仮想アドレス空間を持っています。32ビットアプリケーションなら、アドレス0x00000000〜0xFFFFFFFFの4Gバイトの仮想アドレス空間を持ちます。このアドレス空間はそれぞれのプロセスで独立したものであり、あるプロセスからは別のプロセスのアドレス空間にはアクセスできないようになっています。 例として、プロセスAがメモリ上にあるデータを格納していて、そのアドレスが例えば0x44444444
製品レビューからプログラミング関連のメモ書きまで幅広く扱うBlog。 ※個人的なメモ書きにつき記事内容の正確さは無保証。予告無く改変される可能性あり。指摘は歓迎。 使い方によっては強力な効果を発揮するマルチスレッドプログラミング。Windowsプログラミングやネットワークプログラミングでは重宝する。しかし一般的にVisual C++とPlatform SDKを用いてWindowsプログラミングをする場合、コールバック関数などの設計思想がC言語主体であるので、マルチスレッドプログラミングにてクラスを用いたアプリケーションを開発する場合に不都合な点が生じる。主にスレッドを作成する関数として、CreateThread、_beginthread,_beginthreadexなどが挙げられる。しかしMSDNによると C のランタイムライブラリに記録されている関数を使うスレッドは、CreateThre
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く