タグ

関連タグで絞り込む (156)

タグの絞り込みを解除

c++とcに関するtyruのブックマーク (300)

  • What is the strict aliasing rule?

    A typical situation where you encounter strict aliasing problems is when overlaying a struct (like a device/network msg) onto a buffer of the word size of your system (like a pointer to uint32_ts or uint16_ts). When you overlay a struct onto such a buffer, or a buffer onto such a struct through pointer casting you can easily violate strict aliasing rules. So in this kind of setup, if I want to sen

    What is the strict aliasing rule?
  • type punning と strict aliasing - memologue

    /.JのGCC-3.4リリースの話題を追っていたら、GCC3では-O2で-fstrict-aliasingが有効だから注意せよというポスト(http://slashdot.jp/comments.pl?sid=175355&cid=537217)があった。 strict aliasing については、Radium Software Developmentさんが詳しい。これは気にしておいたほうがよさそうだ。GCCの -fstrict-aliasing の説明は次。 コンパイルされている言語に適用可能な別名規則(aliasing rule)のうち最も厳密なものをコンパイラが前提することを許します。これによって、 C(およびC++)では式の型に基く最適化を動作させることになります。例えば、ある型のオブジェクトが別の型のオブジェクトと同一アドレスに位置することは、それら2つの型がほとんど同一でない

    type punning と strict aliasing - memologue
  • ホワット・ア・ワンダフル・ワールド strict aliasing rule

    来週からは後期スタートだというのに,生活ペースはメチャクチャ.昨日は 17 時に起きてしまい,今日は 22 時半ごろに起きてしまった今日この頃,皆様いかがお過ごしでしたでしょうか ? まぁ,順調に 6 時間ずつズレているので,明日には元に戻るかなと. しっかし,なんで夜型の方には一瞬で 6 時間とか 12 時間とか平気でズレるのに,朝方の方には意識しないと絶対にズレないんでしょうかね ? まぁ,朝の 3 時とかにバリバリ活動しているってのは,ある意味朝型と言えなくもないような (ことはない). 僕は夜はあんまり生産的な方面にやる気が出ない人なので,夜型になると研究がさっぱり進まないと言う.いろいろ危機です. あと,Debian にテキトーなパッケージをいっぱい突っ込んでいたら,何故か日語の TTF (フォント) が表示されなくなってしまいました.そんなこんなで今はビットマップな生活なんで

  • VC++のバグ - L'eclat des jours(2010-06-16)

    _ VC++のバグ 発端:バグか?バグなのか? 結論:0 < 0 は true らしいぞ 追記:(ちゃんと上のリンクをたどると、0 < 0が偽になるのは、API呼び出し先のアドレスがレジスタにキャッシュされたwhileループの時で、かつ0との比較かつ……のような複雑な条件のときだということがわかるんだけど、ぶくまされた部分だけ読んで単に0 < 0が偽になるバグがあるとか誤解しないでくださいね) 当人にとっては深刻ではあるが、無茶苦茶おもしろい。 ためしてみたけど、/O2 /GL でVS2008で再現した。 アセンブリリストを出してみたら、do { ... } while (0 < i); のようなコードが生成されていたから、そりゃ0を与えてもだめだなぁ。 それはだめな点だが、:Sleepの呼び出しがループの中で繰り返されるからだと思うが、dlにアドレスを突っ込んで、以降はレジスタ先へのca

  • 最近のdoxygenはスゴイ - pyopyopyo - Linuxとかプログラミングの覚え書き -

    doxygen*1 と言えば、cやc++のソースコードからドキュメントを自動生成する便利なソフトウェアです。この doxygen、ここ1年ぐらいですごく改良されています。ちょうど昨日(2010/6/15)に最新版の 1.7.0 がリリースされたので、この機会に最新版に乗り換えて、新機能の恩恵にあやかりましょう。 と言うわけで最近の目玉を二つ。 その1: "使いやすい"検索機能 最近のdoxygenは検索機能が付いています。 これはMSDNのオンラインヘルプのような感じで、関数名・変数名でマニュアルが検索できるものです。前方一致で検索するので、たとえば getと入力すれば、即getterの一覧が表示されます。 そして、この機能はブラウザのjavascriptやDHTMLを駆使して実現してあるので、わざわざビューア類を追加インストールする必要もありません。 すばらしい!!! この機能を有効にす

    最近のdoxygenはスゴイ - pyopyopyo - Linuxとかプログラミングの覚え書き -
  • まとめよう、あつまろう - Togetter

    コミュニケーションが生まれるツイートまとめツール

    まとめよう、あつまろう - Togetter
  • printfデバッグのお供に - お前の血は何色だ!! 4

    みんな大好き printfデバッグ。 デバッガでアタッチしにくかったり、とりあえずの動作状況を見たいときなど、、、いまだに強い人気を誇っている printf デバッグです。 だけど、サーバみたいなプロセスだと printf することすらできない。。。 そんなときに使うさくっとコピペでつくれるロガーを作ってみました。 コピペで切り貼りすればあっというまにロガーができます。 楽しい printf デバッグライフがおくれます。 こんなの使うなんて邪悪です。 使い方は簡単で、 MYLOG("ここまでやってきた"); ってやると、 tail /tmp/mydebug ここまでやってきた@ /home/rti/tokyo_tyrant-0.4.0/session.c:66(ps_create_sid_tokyo_tyrant) みたいな形でログに残せます。 printf 表記もいけます。 MYLOG(

    printfデバッグのお供に - お前の血は何色だ!! 4
  • ギャップ・バッファ

    説明 ギャップ・バッファは,テキスト・エディタなどで用いられる,シーケンスを扱うデータ構造です. ここで公開するプログラムはK. Inaba氏の制作されたエディタ,GreenPadにおいて使われているギャップ・バッファをC++言語に含まれるSTLのvectorを使うように改造したものです. また,それをC言語のみで書き直したものも公開しています. 両方ともNYSL(ライセンス)とします. ダウンロード C++言語版: (2003年3月26日) gapbuffer.h C言語版: (2008年9月19日)- 仮の実装なのでバグがあるかもしれません. gbuf.h gbuf.c 解説 ギャップ・バッファはテキスト・エディタのテキスト・バッファなど,長く連なるデータを保持する際に用いられるシーケンス・コンテナです. 局所的な要素の挿入,削除を頻繁にする場合に適したデータ構造です. 双方向リスト(

    tyru
    tyru 2010/05/26
    Emacsで使われてたらしい / 「ギャップ・バッファはテキスト・エディタのテキスト・バッファなど,長く連なるデータを保持する際に用いられるシーケンス・コンテナです. 局所的な要素の挿入,削除を頻繁にする場合に適
  • SpiderMonkeyでJavaScriptからCの関数を呼び出す - NO!と言えるようになりたい

    オブジェクトへ関数を定義する SpiderMonkeyを使えば,JavaScriptからC言語で書かれた関数を呼び出すことが出来る.サンプルによると,JSFunctionSpecの配列を定義して,JS_DefineFunctions関数を呼び出すことで,C言語の関数がJavaScriptの任意にオブジェクトに定義されるようだ.実際のコードは以下の通りとなる.(このコードはC言語じゃなくて,C++言語だが基的な違いはない) #include <js/jsapi.h> #include <stdio.h> #include <stdlib.h> #include <time.h> #include <iostream> JSBool myjs_rand(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval); J

    SpiderMonkeyでJavaScriptからCの関数を呼び出す - NO!と言えるようになりたい
  • 定義済みマクロ

    2007/9/7 デバイス コンパイラでは 7 つの定義済み ANSI C マクロが認識されます。その他に、Microsoft C++ 実装によっていくつかのマクロが提供されます。 これらのマクロは引数を取らず、また再定義できません。__LINE__ と __FILE__ を除いて、これらのマクロの値はコンパイル中一定でなければなりません。 次の表に、定義済みマクロに関する追加情報を示します。これらのマクロの一部では、複数の値が定義されます。 マクロ 説明

    定義済みマクロ
  • redstrange Wiki*

    このWikiについて このWikiは、私 reshia (芸名)が、興味のあることをまとめている Wiki です。 ですので、間違っていることもあるでしょうし、参考にされる方は、その点にご注意ください。 内容は、基的に IT/コンピュータ関連で、特にプログラミングに関わることをまとめています。 他に、ぜんぜん関係のないこともまとめてありますが、気にしないでください(笑)。 2024-09-11 商業コピー 2023-08-05 早口言葉メモ 2022-12-12 現象用語集 2022-01-27 ネットワークの用語集 2021-02-03 セキュリティの用語集 2020-11-20 俺が考えた最高のプログラミング言語 2020-11-16 俺が考えた最高のバージョン管理 プログラミング言語 2020-05-04 ブランド辞典 用語集 2019-05-16 機械学習AI用語集 Front

    redstrange Wiki*
  • Google、「Native Client SDK」のプレビュー版をリリース | エンタープライズ | マイコミジャーナル

    Googleは5月12日(現地時間)、「Native Client SDK」の初期プレビュー版を公開した。Google CodeのプロジェクトページからWindows用/ Mac用/ Linux用をダウンロード入手できる。 Native Clientは、x86系プロセサのネイティブ・コードで記述されたアプリケーションをWebブラウザ上で実行可能にする。メディア編集や3Dゲームなど、処理能力が求められる分野にWebアプリケーションを広げる技術として注目されている。Native Client SDKプレビュー版には、C/ C++コードからx86-32またはx86-64のネイティブバイナリを作成するGCCベースのコンパイラ、zlib/ Lua/ libjpegなどオープンソースプロジェクトのポート、NPAPI Pepper Extensionsを用いた開発のサンプルなどが含まれる。「Chrom

  • YouTube - GCCSense - The most intelligent development tools for C/C++

  • NANの定義について - pyopyopyo - Linuxとかプログラミングの覚え書き -

    gcc環境だと math.h に NAN という定数が定義されている。ところが visual c++ (visual studio)には対応する定義が無い。 環境に依存しない、ポータブルな、移植性の高いコードが必要な場合は、STLを使って #include <limits> std::numeric_limits<float>::quiet_NaN(); std::numeric_limits<double>::quiet_NaN();と書けば良い。 なお quiet_NaN() の"quiet"はシグナルを発生させないという意味。浮動小数点関連の仕様を定めているIEEE 754は、2 種類の NaN を用意していて、 シグナルを発生するNAN (signaling nan) シグナルを発生しないNAN (quiet nan) して区別している。つまりシグナルハンドラから見て、五月蝿い(s

    NANの定義について - pyopyopyo - Linuxとかプログラミングの覚え書き -
  • JNIより簡単にJavaとC/C++をつなぐ「JNA」とは(1/4)-@IT

    インターネットの普及に加えて、リッチクライアント/RIAの発展とともに、アプリケーションの形態は、C/S(クライアント/サーバ)システムから、Webアプリケーションシステムにシフトしています。一般の情報発信システムだけではなく、企業の基幹情報システムまで、盛んにWebアプリケーションで構築するようになりました。 この変化の主役であるといわれる、Java技術は、Webアプリケーションシステムの発展とともに、ネットワークの親和性や、プラットフォーム適用の多様性で、広く受け入れられて、Webアプリケーションシステム開発の基盤技術になっています。 これまでのC/Sシステムでは、サーバロジックはC/C++で実装されるケースが一般的でした。C/SシステムからWebアプリケーションシステムにシフトする際に、Java技術を導入することを決めた場合、Java技術で、すべて新規開発するのは1つの選択肢ですが、

  • in-place merge sort - 鍋あり谷あり

    http://blog.livedoor.jp/dankogai/archives/50957658.html に 現代では一時メモリーを使わないin-place merge sortが開発されている と書いてある。そういえば、STLの stable_sort の計算量が O( N (log N)**2 )だったよなぁと思い、どうやったらそうなるのか調べてみたら http://thomas.baudel.name/Visualisation/VisuTri/inplacestablesort.html に実装があるのを発見した(いやその前にSTLのソースを見たんだが、とても読みにくかったので断念した)。 で。ソースから計算内容を理解し、ああなるほどそうするのかと思ってみた。 というわけで、どんな計算なのかを私なりに説明してみる: 左半分と右半分を整列する。 左半分と右半分をマージする。 こ

    in-place merge sort - 鍋あり谷あり
  • C/C++ から main 関数が消える日 - カタチづくり

    Windows上でデスクトップアプリを開発している身としては、そのうちC/C++でmain関数を書く人って一人もいなくなるんじゃね、と思っている。もちろん簡単なテストコードのためにはmain関数が書けるほうが便利だから全く無くなるわけじゃないんだけど、C/C++でmain関数書いて最終成果物としてリリースされる機会は、もう無くなる日は近い。 C/C++の優位性はパフォーマンスとか低位のAPIを直接叩けるとかしかない。その性能を活かすには要所要所でC/C++ネイティブコードをDLL化して呼び出せば十分で、アプリケーション全体をC/C++で書く必要は全くない。アプリ全体を構築する能力は圧倒的にC#/.NET Framewokのほうが優れている。つまりC/C++でmain関数を書く必要はなく、単にDLLとして関数をエクスポートできれば十分ってことだ。 これは純粋なC/C++の話じゃないけれど、た

    C/C++ から main 関数が消える日 - カタチづくり
  • もしかしてCの奴らは代入やキャストでポインタのアドレスが変わらないとか思っているのか? - 神様なんて信じない僕らのために

    class A { public: A (){} virtual ~A (){} }; class B { public: B (){}; virtual ~B (){}; }; class C : public A, public B { public: C (){} virtual ~C (){} }; int main() { C* c = new C(); A* a = c; B* b = c; printf("c:%p\n", c); printf("b:%p\n", b); printf("a:%p\n", a); delete c; return 0; } a,b,cが全て同じアドレスであると思っている奴はクソして寝ろ。 って、怖い人が言ってました><

    もしかしてCの奴らは代入やキャストでポインタのアドレスが変わらないとか思っているのか? - 神様なんて信じない僕らのために
  • C++の場合ポインタとの比較にはNULLではなく0が使われることが多いようですが、なぜでしょうか。 - 元々C言語においても、ポインタを... - Yahoo!知恵袋

    C/C++のソケット通信について質問させてください。 http://www.geekpage.jp/programming/linux-network/tcp-1.php 現在上記ページを参考に同一PCにてソケット通信を試みています。 しかしクライアント側のプログラムをビルドした際にエラーがでて困っています。 エラー内容は以下の通りです。 エラー C4996 'inet_ad... https://atcoder.jp/contests/abc081/tasks/abc081_b 上のリンクのAtCoderの問題について質問です。 自分の今の知識で考えてみたのですが、結果がうまくいきません。添付画像にコードを書いているのですが、どのあたりが間違っているかをご教授願いたいです! 自分の考え方は、入力された数字を一つずつ2で何回割れるかを判定していって、割れた回数がこれまでの数字よりも最小にな

    C++の場合ポインタとの比較にはNULLではなく0が使われることが多いようですが、なぜでしょうか。 - 元々C言語においても、ポインタを... - Yahoo!知恵袋
    tyru
    tyru 2009/10/23
    C++ではvoid*を任意のポインタに代入する場合には明示的なキャストをしなくてはならないので「(void *)0」を使うメリッ
  • CとC++の動的メモリー管理(1)、malloc関数とnew演算子の違いを知る | EE Times Japan

    C言語とC++言語では、動的にメモリーを確保したり解放したりする手法は異なり、それぞれ長所と短所がある。もちろん、安全性を最重要視する組み込み機器では、動的に確保したメモリーを利用すべきでないという考え方には心から賛同する。リスクが利点を上回ってしまうからだ。しかし場合によっては、動的なメモリーを適切に管理することで改善できることも多いのではないかとも考えている。 C言語やC++言語に標準的に用意されているメモリー管理向け関数の動作が意図した通りでない場合は、メモリー管理関数を独自に開発するとよい。独自のメモリー管理関数の仕様と振る舞いは、できる限り標準関数と同じにすることが理想である。標準関数のメモリー管理方法と違ってしまう場合でも、関数の引数と返り値の数と型は、可能な限り標準関数にそろえるべきである。関数の仕様を同一にしておくことで、最初は標準のメモリー管理関数を使って開発し、必要に応

    tyru
    tyru 2009/09/04