Code Archive Skip to content Google About Google Privacy Terms
このページは、C言語の中級テクニックを中心に解説する。長らくプログラマをしていると、C言語の面白い使い方例が蓄積している。これらを一挙公開するために、このページを作ったのである。しかし、単にCに留まらず、他の言語の面白い特徴なども紹介していく。 内容的にはかなりヘヴィである。当然のことながら、「ポインタ虎の巻」程度の内容はちゃんと使いこなせることを前提とする。意外な技、落し穴、派手なテクニックなど、内容満載だが、ちゃんとデータ構造とアルゴリズムなども説明できれば良いと思う。(まあ、ぼちぼちやってきいます...) 以下の目次には手引きのために、評価がつけてある。凡例として示す。 レベル その解説で記載されている内容のレベル 有用度 その内容が実際に役に立つものかどうか 邪悪度 その内容が薦める方法が、一般的なコーディング規約の中で「邪悪」とされがちなものであるか否か。関数ポインタの活用(濫用
GCC マニュアル日本語訳 gcc-2.95.3 に付属の Texinfo 形式マニュアルの日本語訳です。 "Using and Porting GCC" の日本語訳(HTML 1508KB) "The C Preprocessor" の日本語訳(HTML 124KB) ソースを含むフルアーカイブ(tar+gz 形式 2632KB) Texinfo 形式ソースのみのアーカイブ(tar+gz 形式 894KB) Info 形式ファイル(tar+gz 形式 485KB) DVI 形式ファイル(tar+gz 形式 805KB) 以下は、ソースアーカイブに含まれる README の内容です。 gcc-jman α-20010717版パッケージ 矢吹洋一 2001年7月17日 このパッケージには GCC のマニュアルの日本語訳が含まれています。 GCC のマニュアルとは、GCC のソースコード
ネットワークサーバー実装のためにuIPのソースを読もう。 NICドライバの移植のためにFreeBSDのソースを読もう。 ということで以前使っていた etags を使おうと思ったがキーバインド忘れた。 そして etags はなんだかいろいろ不満点があった気がするので GLOBALを使ってみることに。 以前GLOBALは出力をHTMLにして使ったことがあるのだが、最近EmacsにどっぷりなのでEmacsから使ってみることに。 0.GLOBALって何? GNU GLOBAL は、ソースコードに索引付けを行うことで、大規模システムのハックやレビューを効率化するソフトウエアです。 ソースファイル中の指定したシンボルを高速に見つけ出し、素早くその場所に移動することができます。多くのサブディレクトリからなり、#ifdef や main() 関数を沢山含んでいるような、いわゆる巨大なプロジェクトをハックす
ライブラリの外に公開するシンボルを制限する C言語にはファイル内 (コンパイル単位) からしかアクセスできない static 関数と、別のファイルからもアクセスできる非static 関数があります。しかし、ライブラリを作成する上では、この2つのスコープだけでは不十分なときがあります。 本記事では GNUの開発環境において、ライブラリの外に公開するシンボルを制限する方法を紹介します。 次のような例を考えてみます。 % cat a.c // foo() は libfoo の主役の関数なので公開したい void foo() { bar(); } % cat b.c // bar() はライブラリの中だけで使われるべきなので本当は公開 // したくない。しかし別のファイルに含まれる foo() から使われ // ているので、非staticにせざるをえない void bar() { } このようなコ
状態遷移表 ステートチャート図(UML) 入れ子をどんどん深くしていけばもっと複雑な状態も表せるのですが、あまり深くなりすぎるようならオブジェクトが大きすぎるのかもしれません。 図表を作成することで、各状態における処理を洗い出すことができることが解ったと思います。ところがいざこれをコーディングしようとすると、意外にもなかなか難しいのです。 複数の状態を管理してイベント発生時に適切な関数を呼び出すように管理するために、ややこしいフレームワークを書いて、関数テーブルを作成しなければなりません。こうした手間を軽減するためにCASEツールを用いる方法もあります。状態遷移に対応したCASEツールならば、状態やイベントの追加も簡単ですし、どの状態のどのイベントがテストされていないといったような情報を集めることもできます。 ところで状態遷移とオブジェクト指向の関連性はどうなっているのでしょうか? オブジ
この文書は boost ライブラリで用いられている ジェネリックプログラミングの技術に関する、未完成の調査報告です。 Table of Contents イントロダクション 概念 (concept) の詳細 特性 (traits) タグディスパッチ アダプタ (adaptor) 型生成子 オブジェクト生成子 ポリシークラス イントロダクション ジェネリックプログラミングはソフトウェアコンポーネントを汎用化すること であり、それによってコンポーネントが多様な状況下で簡単に再利用できるよう になります。C++ ではテンプレートクラスとテンプレート関数が特に効果的な仕 組みです。なぜならばテンプレートは効率を犠牲にせずに汎用化を可能にするか らです。 ジェネリックプログラミングの例として、C 標準ライブラリ関数の memcpy()を汎用化する方法を見てみます。
ライブラリ . ドキュメント: 最新のリリース CVS(毎日更新) . ライセンス . Getting Started . 退行テスト: 一般的な情報 テスト結果 メーリングリストと ニュースグループ . Boost (Developers) . Boost Users . Project-Specific . Announcements . Discussion Policy サポート . FAQ . Request Support . Report Bugs . Suggest Features . Commercial Support . Also: Mailing Lists About . Formal Reviews . Review Schedule . Requirements . Guidelines . Submissions Other Resources . Fil
目指せプログラマー!にようこそ。 当サイトはこちらに引っ越しました。 お手数をおかけしますが、上記サイトへご移動くださいませ。
はじめに ここではメジャーなパーサジェネレータflex & bisonをC++から使う方法を考えてみます。この二つのジェネレータはどちらももともとC言語用に開発されましたが、再入可能性などはあまり深く考えられていませんでした。また、C++から利用する場合にはいくつか不便なところがありました。 ここではよりC++と親和性の高いflex & bisonの使い方を考えます。最終的にはヘッダーファイル一つといくつかの手順を守ることで、手軽にパーサクラスを作成できるようになりました。 とりあえずflexとbisonについて flexとbisonはどちらもGNUの開発しているユーティリティで、それぞれレキサ(トークナイザ:字句解析器)とパーサ(構文解析器)を生成するジェネレータです。 これらは元々AT&Tで開発されたlexとyaccを元にしており、それぞれの仕様に従った文法で定義を書いていけば、最終的
組み込み環境の開発では、今なおCが主流の開発言語のままです。このブログでは、C++を組み込み環境で使用するためのTips等を集めてみたいと思います。 『組込み現場の「C++」プログラミング 明日から使える徹底入門』の全文を掲載しました。 ずいぶんご無沙汰しています。 長い間更新できずに申し訳ありませんでした。 こんな状況ではありますが、ひとつだけ告知させてください。 7年前に上梓した書籍『組込み現場の「C++」プログラミング 明日から使える徹底入門』を、株式会社クローバーフィールドのウェブサイトに全文掲載しました。 http://embedded.cloverfield.jp/組込み現場の「c++」プログラミング/ 校正途中の原稿をベースにしたので、書籍とは微妙に内容が異なっています。 また、修正仕切れていない間違いが残っていると予想されます。 その点だけ、あらかじめご了承ください。 お気
Doug Lea の malloc (dlmalloc) 小さなオブジェクトを大量に new しまくるプログラムを C++ で書いたところ、処理時間の多くが malloc() に費やされていることがわかりました。このような場合、自前でメモリ管理を行って最適化するという方法がありますが、なかなか大変です。 そこで、安易に高速な malloc に置き換えてみようということで、 Doug Lea の malloc (通称 dlmalloc) の最新版を試してみました。 dlmalloc の使い方 dlmalloc は 1ファイルをダウンロードしてビルドすれば使えます。次のように実行すると共有ライブラリ libdlmalloc.so を作れます。現時点でのバージョンは 2.8.3 でした。 % wget ftp://g.oswego.edu/pub/misc/malloc.c % gcc -O2
by Doug Lea [A German adaptation and translation of this article appears in unix/mail December, 1996. This article is now out of date, and doesn't reflect details of current version of malloc.] Introduction Memory allocators form interesting case studies in the engineering of infrastructure software. I started writing one in 1987, and have maintained and evolved it (with the help of many volunteer
This is the main web site for flawfinder, a simple program that examines C/C++ source code and reports possible security weaknesses (“flaws”) sorted by risk level. It’s very useful for quickly finding and removing at least some potential security problems before a program is widely released to the public. It is free for anyone to use and is available as open source software (OSS). See “how does Fl
Last revised on May 25, 2000 UNIX & XWindow 環境における C/C++プログラミング言語の基礎とその計算物理への応用を解説します。 このホームページの古い版の偽ミラーサイトが存在するのでご注意ください。 本物のサイトは http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/ です。 前書き 推奨図書一覧 C言語とC++言語の基礎文法の初心者向け解説 (プログラム初心者を対象としたC/C++言語の入門です) 第1章 C言語とC++言語の役割 第2章 簡単な計算 第3章 ループで繰り返し計算 第4章 配列で大量データ処理 第5章 関数で計算の分担 第6章 文字列の操作 第7章 ファイルの操作 第8章 グラフィック(XWindow System利用者向け) 高校物理の計算例 (高校生を対象として初歩的な物
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く