タグ

cに関するkenichiiceのブックマーク (68)

  • LPとLLP - L'eclat des jours(2010-10-16)

    _ LPとLLP 教わったのでメモ。 Wikipediaの64ビットがまとまっている。 Linuxは、LP64。LPというのは、LongとPointerが64ビットという意味。 一方、Win64はLLP64。LLPというのは、Long longとPointerが64ビットという意味(Longは32ビット)。 そこで、Linuxであれば、sizeof(long) == sizeof(void*)なのでいい加減なキャストでも問題ないが、Win64だとsizeof(long) < sizeof(void*)なのでいい加減なキャストだと問題がおきる。 ここでのいい加減なキャストというのは、32ビットを前提とした void foo(long l) { strcpy((void*)l, "foobar"); } みたいなもの。

    kenichiice
    kenichiice 2010/10/22
    「Linuxであれば、sizeof(long) == sizeof(void*)なのでいい加減なキャストでも問題ないが、Win64だとsizeof(long) < sizeof(void*)なのでいい加減なキャストだと問題がおきる。」
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
    kenichiice
    kenichiice 2010/07/28
    URLが変わっていた
  • [ruby-dev:41273] Re: [ruby-cvs:34935] Ruby:r27723 (trunk): * ext/psych/parser.c (parse): Return strings encoded as

    kenichiice
    kenichiice 2010/05/11
    「gcc -pedantic」
  • C/C++プログラマのためのDTrace入門 記事一覧 | gihyo.jp

    運営元のロゴ Copyright © 2007-2024 All Rights Reserved by Gijutsu-Hyoron Co., Ltd. ページ内容の全部あるいは一部を無断で利用することを禁止します⁠。個別にライセンスが設定されている記事等はそのライセンスに従います。

    C/C++プログラマのためのDTrace入門 記事一覧 | gihyo.jp
  • FLP35-C. 浮動小数点数値を比較する際には精度を考慮する

    FLP35-C. 浮動小数点数値を比較する際には精度を考慮する C の浮動小数点演算は正確ではない。特に、浮動小数点数を比較する際は、可搬性があり計算結果が同じになる方法で行う必要がある。 違反コード c と a / b の比較の結果は、あらかじめ予測することはできず、実行するマシンやコンパイラ、最適化レベルの違いによって変わる可能性がある。 float a = 3.0; float b = 7.0; float c = a / b; if (c == a / b) { printf("Comparison succeeds\n"); } else { printf("Unexpected result\n"); } 処理系固有の詳細 このコードを、IA-32 Linux 上の GCC 3.4.4 で最適化レベル 1 以上、あるいは IA-32 Windows XP 上の Microsof

  • 最適化の為のアセンブラ入門

    現在、アセンブラを使わなければならないという状況はあまりありませんが、最適化をする場合はアセンブラを知っている方がなにかと有利です。特に、コンパイラの吐いたコードを吟味することはとても重要です。よってここでは、アセンブラコードを読む能力と、簡単なアセンブラコードを書く能力を身に付けることを目標とします。 この記事は Windows 上で VC++ を使う場合を想定して書いていますが、BCC でも殆ど同じですし、gcc でも少し書き方を変えれば使えます。Intel のプロセッサ上で動く Linux 等でも基的な部分は同じですし、命令セットの異なるプロセッサでも、基的な部分は役に立つと思います。ターゲットは Intel Pentium 系プロセッサです。 第0回 アセンブラってどういうもの? 第1回 代入と基的な演算 第2回 定数とメモリの扱い 第3回 レジスタについて 第4回 分岐命

  • Makefile は簡潔に書きましょう - pyopyopyo - Linuxとかプログラミングの覚え書き -

    仕組みが判ってしまえば Makefile は簡潔に書けます.$(CC) とか $@ とか $< なんて変数は使ったら負けです. 基(その1) ソースコード hoge.c から 実行形式のバイナリ hoge を生成するMakefileは,以下のように書きましょう all: hogeこれだけです.これで $ make all とすると hoge が生成されます 重要な点は,間違っても all: hoge hoge: hoge.c $(CC) hoge.c -o hogeのようなMakefileを書かないことです.このようなMakefileでは #!/bin/sh CC=gcc $CC hoge.c -o hoge というようなシェルスクリプトと同程度の使い勝手しかありません. 基(その2) ここで例えば-O3 を付けてコンパイルしたい場合や,-lm を付けてリンクしたい場合は以下のようにし

    Makefile は簡潔に書きましょう - pyopyopyo - Linuxとかプログラミングの覚え書き -
    kenichiice
    kenichiice 2009/10/26
    「$(CC) とか $@ とか $< なんて変数は使ったら負けです.」
  • C/C++ から Ruby を動的に扱う « ますぽんの雑記

    RubyPython とよく比較される国産のインタプリタ言語で、文字列の扱いに定評があります。オブジェクト指向で、モジュール、クラス、例外処理、ガベージコレクション等最新の機能は一通り揃った魅力ある言語です。今回は、これを前回と同じように C/C++ から動的に扱ってみます。まずは、C/C++ から Ruby スクリプトを呼んでみます。 #include <Ruby/ruby.h> const char *script = "def multiply(x,y)\n" " return x*y\n" "end"; int main(int argc, char *argv[]) { VALUE value; ruby_init(); // スクリプトの読み込み rb_eval_string(script); // スクリプトの実行 value = rb_funcall(Qnil,rb_

  • GT Nitro: カーレーシング・ドラッグレーシングゲーム - Google Play のアプリ

    GT Nitro: Car Game Drag Raceは、典型的なカーゲームではありません。これはスピード、パワー、スキル全開のカーレースゲームです。ブレーキは忘れて、これはドラッグレース、ベイビー!古典的なクラシックから未来的なビーストまで、最もクールで速い車とカーレースできます。スティックシフトをマスターし、ニトロを賢く使って競争を打ち破る必要があります。このカーレースゲームはそのリアルな物理学と素晴らしいグラフィックスであなたの心を爆発させます。これまでプレイしたことのないようなものです。 GT Nitroは、リフレックスとタイミングを試すカーレースゲームです。正しい瞬間にギアをシフトし、ガスを思い切り踏む必要があります。また、大物たちと競いつつ、車のチューニングとアップグレードも行わなければなりません。世界中で最高のドライバーと車とカーレースに挑むことになり、ドラッグレースの王冠

    GT Nitro: カーレーシング・ドラッグレーシングゲーム - Google Play のアプリ
  • IPA セキュア・プログラミング講座:C / C++言語編

    IPA 独立行政法人 情報処理推進機構 セキュリティセンターによるセキュア・プログラミング講座:C / C++言語編

  • “本物のマクロ”でCのコード行数を半分に! - @IT

    2009/09/07 毎年夏に開催される軽量プログラミング言語(LL:Lightweight Language)をテーマにした「LLイベント」。第7回目となる「LLTV」が、2009年8月29日に東京・中野で開催された。この記事ではプログラムの一部、「大改善!!劇的ビフォーアフター」をレポートする。前編では、Rubyによるfortuneコマンドの“増築”と、Firefox拡張によるslコマンドの実装というネタ系発表をレポートした。中編となる記事では、C言語にLisp風のマクロを取り入れ、lsコマンドのソースコードを約半分に“修繕”する匠の技をレポートする。後編では、売り場業務が滞りがちだった販売管理システムをbashコマンドで“建て直した”という劇的ビフォーアフターの発表をレポートする。 Cで書かれたlsのソースコードの問題点 「Real/Macro Metaprogramming On

    kenichiice
    kenichiice 2009/09/09
  • gccにおけるatomic操作命令の個別関数

     gccとVC x86/x64環境で開発する上で, gccとVCはどちらも非常に優れたC/C++コンパイラです. ただLinuxWindowsのどちらの環境でも動作するようなC/C++コードを書くためには, gccとVC, およびそれらが動作するOSの違いが問題になることがあります. ここではそれらの違いについてまとめていきたいと思います. なお説明を簡単にするためにマクロを多用していますが実際には可能なら別の手段をとるか, 名前がぶつからないような命名規則に則ったマクロ名をつけることをお薦めします. 対象 定義済みマクロ 有用なマクロ コンパイルオプション 演算子の代替表現の抑制 日語のコメント 型 pragma attributeとdeclspec ファイル入出力 テキストとバイナリ 巨大なファイル static変数の初期化 snprintf 例外ハンドラ intrinsic関数

  • Account Suspended

    Account Suspended This Account Has Been Suspended

    kenichiice
    kenichiice 2009/07/17
    「空でないソースファイルが改行文字で終わっていない場合,その動作は,未定義とする。」
  • いやなブログ: Cのポインタを整数に変換する

    Cのポインタを整数に変換する Cのポインタを整数に変換したいときがあります。このとき問題になるのは、ポインタのサイズが int と同じとは限らないということです。たとえば、 x86_64 の 64ビットのバイナリでは sizeof(int) = 4, sizeof(void *) = 8 となります。ポインタと同じサイズの整数を使いたい場合は C99 で導入された stdint.h で提供される intptr_t または uintptr_t を使います。 stdint.h には他にも int32_t や int64_t など、サイズつきの整数の型も提供されています。たとえば、uint64_t を使うと、64ビットの符合なし整数を扱うことができます。 私の場合、C++ のプログラムで void * から直接 uint64_t にキャストしようとしてはまりました。次のプログラムを x86_32

    kenichiice
    kenichiice 2009/06/09
    「C99 で導入された stdint.h で提供される intptr_t または uintptr_t を使います。 」
  • C言語・C++言語用テスティングフレームワーク - Cutter

    最新リリース 2019-09-13にリリースされた1.2.7が最新です。 [ダウンロード] [変更点] Cutterとは Cutterは書きやすさ・デバッグのしやすさを重視したC言語・C++言語用のテスティングフレームワークです。メンテナンスしやすく、利用効果の高い単体テスト(ユニットテスト)の開発を支援します。 また、テストを苦痛ではなく、楽しいものにすることも重視しています。スクリーンショットはテスト結果の通知機能を利用している様子です。文字としてテストのパス・失敗を伝えるだけではなく、視覚的にも通知することで、テスト結果をわかりやすくします。わかりやすいので、頻繁にテストを実行したくなります。この機能はnotify-sendコマンド(Linuxや*BSDなどの場合)またはgrowlnotifyコマンド(macOSの場合)を利用します。 動作環境 CutterはDebian GNU/L

  • 3.1 配列の要素数を返す. - C/C++ 関数・マクロ集 ((ほぼ?) 処理系・OS 非依存)

    「C/C++ 関数・マクロ集」というタイトルですが, そのうちのいくつかはC専用だったりします.(苦笑) 2007/06/24(日) 追記 高木さんより, Cの規格上移植性に問題がある点をご指摘いただいたので, 現在修正中です. (たくさんあります….orz) とはいってもその多くは, めったにお目にかかれないような珍しい処理系とか, 「そんなの実在するの?」という処理系に移植する場合の話なので, 実用上ほとんどの場合は問題ないと思います. (一部そうとはいえないものもありますが.) Cの規格に照らして完全に「処理系・OS 非依存」 にするのは困難な場合もあり, 完璧な移植性にこだわるあまりプログラムが書けなくなっては末転倒なので, タイトルに「ほぼ?」を入れました.orz 2007/06/21(木) 追記 このページを含め,私が C/C++ 関連記事を書くに当たりたびたび参考に&リンク

    kenichiice
    kenichiice 2009/01/15
    「sizeof(((type*)0)->member)」
  • OSDIR

  • OMake つかったらC言語でプログラム書く手間がバカみたいに減った - 日記を書く[・ _ゝ・]はやみずさん

    OMakeすごい。OMakeはマジですごい。 OMakeはGNU makeの代替品みたいなものなんだけど、正直なところこのツールの強力さはGNU makeと比べると失礼なくらいすごい。これのおかげで、「コード修正→ビルド→デバッグ→コード修正→・・・」のループの、ビルドにあたる作業がほぼ消え去った。 ファイルの依存関係の解析がとにかくすごい。よくあるユースケースなんかの場合、最小限の手間でほぼ完璧に依存関係を網羅して、よしなにビルドしてくれる。 とりあえず、はやみずが実際に使ってみたケースを例にとってそのすごさの一端を紹介しようと思う。 case study 論より証拠ということで、自分が OMake を試しにつかってみたケースを紹介する。C言語でスタティックライブラリを作っていて、それに加えて簡単なテストプログラムを書いている。 /include/ 以下にヘッダファイルが全部ある /sr

    OMake つかったらC言語でプログラム書く手間がバカみたいに減った - 日記を書く[・ _ゝ・]はやみずさん
  • Rubyの拡張ライブラリーを書いた - yuum3のお仕事日記

    仕事で必要に迫られ C言語で書かれたライブラリーをRubyから使えるようにできる拡張ライブラリーを初めて書きました。 ネット上を探してみると Ruby用拡張ライブラリをCで作る --- Little Penguin や Ruby拡張ライブラリ作成チュートリアル などの拡張ライブラリーの書き方を説明したページがあり、どんなふうにすれば作れるのかを知るのに役立ちます。 ありがとうございます! しかし、今は廃止されたマクロが使われている例などもあり、当に拡張ライブラリーを作る際には正式な文書である README.EXT.ja を読みましょう。 (このファイルはRubyのソースファイルに含まれています) また、青木さんの書かれた LoveRubyNet Wiki: RubyExtensionProgrammingGuideもRubyのオブジェクトの構造の解説なども書かれていて良いドキュメントだ

  • ApacheModuleでWebアプリケーションをつくろう

    1.はじめに Webアプリケーション開発の現場で使用されている開発言語には、JavaPerlPHP、最近であればRubyPythonなどがあります。この分野ではC言語も、CGIによるWebアプリケーション開発で旧来から用いられていますが、最近の開発者にはあまり馴染みがないかもしれません。当時の新技術であったJavaと比較して、あまりにも遅い結果が出ていたからとも言われています。 しかし、Webサーバの「Apache」、データベースの「PostgreSQL」「MySQL」、OSの「Linux」など、各所でオープンソースソフトウェア(OSS)の開発言語には、依然としてC言語が多く用いられています。このようにC言語は、Webアプリケーション開発の現場で使われるケースは減ったものの、現在でも重要な開発言語の一つです。 そこで今回は、Apache 2.2のmod_dbdで実装された「データベー

    ApacheModuleでWebアプリケーションをつくろう