タグ

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

タグの絞り込みを解除

cに関するglass-_-onionのブックマーク (7)

  • E. 歩行ロボットの実験

    地面の上をロボットが歩いているようなアニメーションを表示するプログラムを作ってみましょう. これまでに作ったプログラムをベースを改造するのが手っ取り早いと思いますが, うまく行かなければ下の手順を参考にしてください. このプログラムは結構長いので, 時間が無ければ Web ページからコピーアンドペーストして構いません. ソースファイル名は prog7.c としてください. 下のプログラムは地面の上に立っている 四角い箱でできたロボットのような物体(箱男)を静止画で表示します. これが地面の上を歩き回るようにしてください. 歩き方は自由ですが, できるだけ自然に歩いているように見えるようにしてください. #include <stdlib.h> #include <GL/glut.h> #define STEPCYCLE 400 /* 手足のひと振りに要する時のフレーム数   */ #defi

  • 第9回 機能拡張でよく使われる共用体(union)

    構造体によく似たC言語の機能に「共用体」(union)があります。これは,IPv4をIPv6に拡張するときなど,カーネルの機能を拡張する際によく使われます。共用体の使い方とカーネルでの利用例を実際に見ていきましょう。 カーネルは,機能がよく拡張されます。例えば,ネットワーク・プロトコルの「IPv4」と「IPv6」の関係です。現在の主流はIPv4ですが, LinuxカーネルはIPv6に対応しています。ソース・コードを見ると分かるように,IPv6のコードを一から書いているのではなく,IPv4を処理する部分でIPv6と共用できるところを機能拡張しています。ここで使うのが,「共用体」(union)です。 共用体は,カーネル内部のあらゆる部分に利用されています。カーネルの読者にはとても大事なものですが,C言語の教科書の多くには詳細な解説がありません。そこでまず最初に,共用体とは何かを説明しましょう。

    第9回 機能拡張でよく使われる共用体(union)
    glass-_-onion
    glass-_-onion 2009/10/14
    共用体のわかりやすい説明
  • C言語〜ゲームプログラミングの館〜

    ※ 更新履歴 ※ 2017/11/03 ・sp.8章追加 2017/10/11 ・配布しているプロジェクトをVisualStudio2017に更新(それにまつわる説明も更新) 2015/09/12 ・s.3章 Androidのようなボタンの作り方(C++) 追加 2013/09/02 ・VisualC++2012のプロジェクトを追加 2013/02/23 ・d3.5章追加 2013/02/20 ・d3.1章追加 ・d3.2章追加 ・d3.3章追加 ・d3.4章追加 2013/01/19 ・sp3章追加 ・sp4章追加 ・sp5章追加 ・sp6章追加 ・sp7章追加 2012/06/23 ・3.14章追加 2012/06/16 ・sp1節追加 ・sp2節追加 2012/02/11 ・d6節追加 2011/11/10 ・h11章追加 2011/10/31 ・s1章追加 ・s2章追加 2011/

  • 配列とポインタの奇妙な関係

    第1項:配列のような使い方 第2項:ポインタ専用の書き方 第3項:古き悪きポインタ演算 第4項:アドレスのことは忘れましょう [1]配列のような使い方 前節では、関数に配列を渡すには配列の先頭要素のアドレスを渡していたと説明しました。 ところで、次のプログラムは、ポインタ型の引数にした前節のプログラムですが、 このプログラムを見て、どこか不自然な部分は見あたらないでしょうか? #include <stdio.h> int getaverage(int *data); int main(void) { int average,array[10] = {15,78,98,15,98,85,17,35,42,15}; average = getaverage(array); printf("%d\n",average); return 0; } int getaverage(int *da

    glass-_-onion
    glass-_-onion 2009/04/17
    説明が秀逸すぎる
  • OMake つかったらC言語でプログラム書く手間がバカみたいに減った - 日記を書く[・ _ゝ・]はやみずさん

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

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

    プログラムを書いていると,Segmentation fault や Bus error に なってしまうことがよくあります.このようなエラーの原因はどのようにして 探ればよいのでしょうか? 例えば,このようなプログラムがあります. #include <stdio.h> #define MAX 10 int main(){ int *p; int buf[MAX]; int i; p=buf; for(i=0; i<=MAX/2; i++){ buf[i*2+1]=0; } printf("%d\n", *p); return 0; } これは配列 buf の添字が奇数であるものに 0 を代入します。 また、ポインタ変数 p は配列 buf の先頭要素 を指し、プログラムの最後に先頭要素を表示させています。 ところが,これを実行すると Segmentation fault になります。 $

  • いやなブログ: Linux の共有ライブラリを作るとき PIC でコンパイルするのはなぜか

    Linux の共有ライブラリを作るとき PIC でコンパイルするのはなぜか 通常、Linux の共有ライブラリを作るときは各 .c ファイルを PIC (Position Independent Code) となるようコンパイルします。しかし、実は PIC でコンパイルしなくても共有ライブラリは作れます。それでは PIC にする意味はあるのでしょうか。 さっそく実験してみます。 int func () { printf(""); printf(""); printf(""); } PIC でコンパイルするには gcc に -fpic または -fPIC を渡します。-fpic の方が小さく高速なコードを生成する可能性がありますが、プロセッサによっては -fpic で生成できる GOT (Global Offset Table) のサイズに制限があります。一方、-fPIC はどのプロセッサで

  • 1