そういえば C で quine 書いた覚えがないなー、あと Linux のカーネルモジュール書いてみたいなー、と思ったので、練習として Linux のカーネルモジュールで quine を書いてみました。 ref: http://github.com/mame/kernel-mode-quine ビルド方法。まず、環境にあわせて Makefile の KDIR をいじってください。Ubuntu ならいじらなくてもいけるかも。Debian だと linux-headers とか入れればこのままで行けるかも。とにかく make が通れば OK 。 $ vi Makefile $ makeinsmod でカーネルにロードする。素人が書いたカーネルモジュールなので、何が起きても知りません。 $ sudo insmod ./quine.ko/proc/quine ができてるはず。 $ ls /proc
説明 ギャップ・バッファは,テキスト・エディタなどで用いられる,シーケンスを扱うデータ構造です. ここで公開するプログラムはK. Inaba氏の制作されたエディタ,GreenPadにおいて使われているギャップ・バッファをC++言語に含まれるSTLのvectorを使うように改造したものです. また,それをC言語のみで書き直したものも公開しています. 両方ともNYSL(ライセンス)とします. ダウンロード C++言語版: (2003年3月26日) gapbuffer.h C言語版: (2008年9月19日)- 仮の実装なのでバグがあるかもしれません. gbuf.h gbuf.c 解説 ギャップ・バッファはテキスト・エディタのテキスト・バッファなど,長く連なるデータを保持する際に用いられるシーケンス・コンテナです. 局所的な要素の挿入,削除を頻繁にする場合に適したデータ構造です. 双方向リスト(
Unix開発をVCでしろ、ソースにはVCの跡を残すな、って無茶な要求だけどしょうがない。 UnixメインのソースをVCでコンパイルする際に問題になることの一つがunistd.h。 gethostnameとかgetpidを使いたい場合に必要になってくる。 とりあえず動くように適当にヘッダを作ってみた。 //<unistd.h>をWindowsで使用するための定義 #ifndef _UNISTD_H_ #define _UNISTD_H_ #ifdef _WIN32 #pragma once #include <io.h> /* access chmod chsize close creat dup dup2 eof filelength isatty locking lseek mktemp open read setmode sopen tell umask unlink write */
オブジェクトへ関数を定義する 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
米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
ENV00-C. getenv() が返す文字列へのポインタを保存しない C99 は getenv() の動作を次のように規定している。[ISO/IEC 9899:1999] getenv 関数は、一致する並びの要素に結び付けられた文字列へのポインタを返す。このポインタが指す文字列をプログラムで変更してはならないが、引き続く getenv 関数の呼出しで書き換わることがある。 ゆえに、getenv()が返すポインタは保存すべきでない。このポインタは、2 回目以降に getenv() 関数を呼び出したときに上書きされたり、putenv() や setenv() の呼び出しによって環境変数の並びが変更された結果として無効になる可能性がある。 getenv()が返すポインタを後で使用するために保存しておくと、ダングリングポインタとなったり、正しくないデータを指すようになるおそれがある。geten
Recent entries Apache2.4のリリース予定は来年(2011年)初め(あくまで予定) inoue 2010-12-23 Herokuの発音 inoue 2010-12-20 雑誌記事「ソフトウェア・テストPRESS Vol.9」の原稿公開 inoue 2010-12-18 IPA未踏のニュース inoue 2010-12-15 労基法とチキンゲーム inoue 2010-12-06 フロントエンドエンジニア inoue 2010-12-03 ASCII.technologies誌にMapReduceの記事を書きました inoue 2010-11-25 技術評論社パーフェクトシリーズ絶賛発売中 inoue 2010-11-24 雑誌連載「Emacsのトラノマキ」の原稿(part8)公開 inoue 2010-11-22 RESTの当惑 inoue 2010-11-22 「プ
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
C言語 Version 6のUNIXのソースコードは「pre K&R」とよばれる古いCで記述されている。 現在のCの知識でだいたいはわかるが、理解に苦しむ個所もある。 うるさいことを言えば当時のリファレンスマニュアルを参照して、 当時の文法に親しむのが正攻法であろう。 が、とりあえず「これだけわかっていればソースは読める」というところだけ、 てっとりばやくまとめておこう。 構造体のポインター なかでも衝撃的なのは、 構造体のポインターからメンバーを参照する演算子「->」が自由に使えることである。 たとえば、slp.cから関数setpri()を見てみると setpri(up) { register *pp, p; pp = up; p = (pp->p_cpu & 0377)/16; p =+ PUSER + pp->p_nice; if(p > 127) p = 127; if(p > c
初出: C MAGAZINE 1995年12月号 Updated: 1996-03-12 [←1つ前] [→1つ後] [↑質問一覧] [↑記事一覧] [ホームページ] 不定と未定義 C言語で書いたプログラムのバグの中には、言語仕様上の動作が処理系に依存 するようなコードが原因のものがあります。コンパイラをバージョンアップした のでコンパイルし直してみたら動かなくなった、というのはよくある話です。コ ンパイラ自体のバグだったという悲劇的なケースもないわけではありませんが、 コンパイラのバージョンに依存するようなコードを書いていたため、ということ も案外多いようです。基本的には、結果が不確実なコードは書かない、というの が原則ですが、そのためには、不定、未定義という考え方を身に付けておく必要 があります。 不定、未定義の定義 Q 【不定】 不定とは何か。 A C言語の仕様としては正しい書き方で
とりあえず記録 libiconv - GNU Project - Free Software Foundation (FSF) 環境 でびあん GCC 4.3.2 っぽい ダウンロード wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz インストール $ ./configure --prefix=/usr/local $ make $ make install とりあえずやった $ export LD_PRELOAD=/usr/local/lib/preloadable_libiconv.so libiconv.so.2 が見つかんないとかいいよるので # vi /etc/ld.so.conf /usr/local/lib ← 追加 # ldconfig ← 実行 Apache2.2のコンパイルでapxsエラー(l
C言語の次期規格 C1X から新たに追加される標準ヘッダがあります。 C1X の新しい標準ヘッダ これら3つが追加される予定です。 すべての標準ヘッダ 3個足されて,すべての標準ヘッダ数は27個になります。 C1X で追加されるヘッダの数は少ないですが,既存のヘッダにおいても関数宣言やマクロ定義の追加があり,ライブラリは充実します。 参照元 Draft N1425 (PDF) 7.1.2 Standard headers 2
About 南の島のプログラマ。 たまに役者。 Practical Schemeの主。 WiLiKi:Shiro 最近のエントリ 無限cxr高校受験Defense振り返ってみると2019年は色々学んで楽...覚えるより忘れる方が難しい(こともある)眼鏡のつると3DプリンタIris Klein Acting ClassSAG-AFTRA conservatory: Voice Acting創作活動って自分を晒け出さねばならないと...ループを使わずに1から100までMore... 最近のコメント shiro on 歳を取ると時間が速く過ぎるのは、新しいことに挑戦しないから? (2023/03/14)1357 on 歳を取ると時間が速く過ぎるのは、新しいことに挑戦しないから? (2023/03/01)ベアトリーチェ on ハイポハイポハイポのシューリンガン (2022/04/02)ベアトリーチ
C言語, win32 | 14:44昨日は雪降りました。積りました。雪かきの流れです。たまにやる雪かきは楽しいですね。あと今日は都合によりC++でシューティング作りますか第1回ではありません。第1回がいつ行われるかは未定なんです。またタイトルと記事内容が一致しているぞひょっとして3回連続一致してるんじゃないんですか。変なタイトルはtwitterの方に流れるようになったからですかね。twitter強いですね。今日の話はMSDN無視したサンプルコードがwin32の解説ページに多い気がしたのでやってみました。メッセージループは-1もチェックしようよ!メッセージループが何かについては説明が面倒なので割愛します。win32の解説ページを適当に調べてください。流石にこれについて変なこと言っているページは見たことありません。で、よくwin32の解説ページで見られるメッセージループはこちらです。 MSG
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く